git commit --fixup
で任意のコミットの内容に変更を加える
これまで、すでにコミットをした後に気づいた細かい不具合修正やlinterの適用やtypoの修正はgit commit --amend
を利用して直前のコミットに混ぜることでコミットログを綺麗にするようにしていた。しかし、もし混ぜ込みたいコミットが直前ではない場合だと--amend
は利用できないので新しくrefactor: fix typo
やrefactor: apply formatter
のようなコミットを作成していた。
今回、新しくgit commit --fixup <revision>
というオプションを知った。これを使うと指定したコミットに対してfixup(修正)をするコミットを作成でき、git rebase --autosquash <revision>^
と組み合わせることで特定のコミットに任意の変更を後から混ぜることができる。※ git rebaseをするためコミットハッシュは変わる
エディタを開かずにinteractive rebaseを行う
git rebase --autosquash
を行うにはgitのバージョンが2.44以降である必要がある。もしそれ以前のgitバージョンを利用している場合は--autosquash
は-iオプションをつける必要がある。その場合、エディタが開いてしまうが、GIT_SEQUENCE_EDITOR=:
やGIT_SEQUENCE_EDITOR=true
を指定しておけばエディタが開かずにinteractive rebaseが可能となる。