git commit --fixup

本日のTIL

ぶつかったこと

仕事でコードを書いてレビューをお願いしたら、上司から二つ前のコミットを変えるように言われました。 「--fixup を使うといいよ!」と言われたのですが、そのオプションを知らなかったのでググってみました。

解決法

普通にコミットするときに既存のコミットを下のように指定します。

git commit --fixup HEAD~1

こうすると指定されたコミットメッセージの先頭に “fixup! ” がついたコミットになります。

そして、この状態で --autosquash というオプションをつけて rebase -i します。

git rebase -i --autosquash HEAD~2

すると、エディタが開きますが、とりあえず何も考えず内容を保存して終了してみましょう ( エディタが開いた段階で指定したコミットと”fixup!” がついたコミットがまとめられるようになっています )。 これで、 “fixup!” のついたコミットと指定したコミットが一つにまとまります ( コミットメッセージには “fixup!” はつきません ) 。

ちなみに、 --autosquash というのは長いですね。いちいちオプションをつけるのは面倒です。 エイリアスを設定してもいいのですが、下記のように設定するといつでも rebase をするときに --autosquash をつけたのと同じことになります。--autosquash オプションをつけて頻繁に rebase する場合はぜひ下記のコマンドを叩きましょう。

git config --global rebase.autosquash true

まとめ

便利なオプションがあったんだなあ。というお気持ちです。はい。

 
comments powered by Disqus