メインコンテンツへスキップ

gitのautosquashでfixupを楽にしたかった

·572 文字·2 分
git
称徳寺 涼雨
著者
称徳寺 涼雨
プリズムスタァ

ちょっと細切れに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:

書き換える作業が不要になって便利〜〜〜!


参考リンク