ちょっと細切れにcommitして、後でfixupしようと思って進めていた。
じゃあいざまとめようと思ったが、例えば「fixupしようと思っているコミットが20個」あるとなった時、fixupに書き換えるのクッソ面倒だなぁという所でググっていたら、 autosquash
というのを使うといい感じになるようです。
例えば、1ファイルだけあるリポジトリで下記のような状態になっているとする。
$ git log --oneline
d4c03cb 内容を変更する
c42e8ba ファイルの追加
適当にファイルを変更して都度 --fixup
オプションをつけてcommitを行う。
コミットIDにはまとめたいIDを入れておく。
$ git commit --fixup d4c03cb
オプションを付与すると、コミットメッセージの先頭に fixup!
が付く。
2回ほどコミットをした状態が下記になる。
$ git log --oneline
1b85a57 (HEAD -> master) fixup! 内容を変更する
069e78b fixup! 内容を変更する
d4c03cb 内容を変更する
c42e8ba ファイルの追加
じゃあ実際に d4c03cb
のコミットにまとめたいと思う。rebaseのときに --autosquash
を付ける。
$ git rebase -i --autosquash c42e8ba
interactiveモードに入りますが、fixup!
というコメントがついたコミットについて勝手に fixup コマンドがセットされている。
pick b9d0cb7 内容を変更する
fixup 6579b13 fixup! 内容を変更する
fixup eb8ff6f fixup! 内容を変更する
# Rebase c42e8ba..eb8ff6f onto c42e8ba (3 commands)
#
# Commands:
書き換える作業が不要になって便利〜〜〜!
参考リンク