JavaScriptを有効にしてください

git ブランチの全コミットをまとめたい git merge –squash

 ·  ☕ 2 分で読めます  ·  ✍️ saiki

gitコマンドシリーズです。

状況

  1. 作業ブランチで長く作業していてコミットの量が多くなった。このままmasterにマージするとmasterのコミットが散らかる&他の人のソースツリーにpull(283)みたいなでかい数字が出てびっくりする。
  2. コードレビューをしてもらうために変更をひとまとめにしておきたい。
  3. 分けるほどのコミットじゃなかった。

などなど。とにかくコミットまとめたい時です。

1,2,はちょっとしたマナーみたいなものなので率先してまとめていくといいのかなぁと最近思いました。まとめずにコードレビュー出すとちょっと迷惑(面倒)がかかるので特に気をつけましょう(先日の私)。

コマンド git merge –squash

コマンドは以下

git checkout muDevBranch//作業用ブランチに行くor居る

git merge master//最新のマスターを取り込む(rebaseでもいいよね)

git checkout -b neatBranch master//まとめる用のブランチをマスターから切る

git merge --squash myDevBranch//作業ブランチのコミット群を一つの変更として取り込む

git commit//忘れずコミットする

これでneatBranchには一つのコミットだけが乗ります。

これをマスターのブランチにマージしたらマスターにはまとめたコミット一つとマージコミットの二つしか残らないというわけです。めでたしめでたし。

 

ただsquashしてまとめられたコミットの中の一つだけrevertしたいといった状況が発生したらどうするんだろうっていうのが少し心配なんですよね。

どうするんでしょう?

まあそもそも機能ごとに適切にブランチ分けていたらその中の一部だけなかったことにしたいなんてことは滅多にないのかもしれないですね(実際今までなかった気がする)。

皆さんはどうしているのか、そもそもまとめていないとかそういう話あったら是非教えてください。お待ちしています。

追記

まとめたコミットの中に残っているCommitIdを使えば普通にrevertできました!

チェリーピックもできます。

まあそりゃそうですよね。安心です。

ガンガンまとめていきましょう。

 

以上でした。

ではまた。

共有

saiki
著者
saiki
Android App Developper