Skip to main content
  1. Posts/

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

·52 words·1 min
Table of Contents

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できました!

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

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

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

 

以上でした。

ではまた。

Related

git 退避(stash)した作業をリストから消さずに反映 git stash apply
·33 words·1 min
git 追跡されていないファイル(untracked file) を消す git clean -f
·39 words·1 min
git 複数ファイルの変更をcheckoutしたい git checkout *
·35 words·1 min