Gitのv2.32.0から git commit で指定できる --fixup オプションで amend, reword が使えるようになった。

既存のコミットにちょい足しして後でまとめ上げたいときに便利な --fixup だが、今までコミットメッセージは変えることが出来なかった。

今回追加された git commit --fixup=amend:<commit> を使うと、コミットの内容だけでなくコミットメッセージまで変更できる。 git commit --fixup=reword:<commit> を使えばコミットメッセージだけ変更できる。

それらの修正コミットを積んだあとでおもむろに git rebase -i --autosquash を叩けばいい感じにコミットをまとめやすい。

rebaseの際には fixup -C コマンドとしてtodo list1にあらわれてくる。

fixup -Cを含んだgit rebase中のtodo listの様子。
todo listはこんな感じ。

何が嬉しいか

ぼくはとにかく細かくコミットするスタイルで開発している。コミット単位の操作・修正が容易だったり、順序を入れ替えてもコンフリクトを起こしにくかったりするメリットもある。

そういった細かいコミットが生まれまくってる手元の環境で、HEADより前のコミットに対する修正として変更を残したいときに上述の --fixup をよく使っている。

それで特に不都合がない場合も多いが、たまにあとから行った変更のほうがそのコミットの中心的な変更だったりすることがあり、そういった場合にコミットメッセージも変更したくなることがある。

そんな場面でもちまちまrewordする必要なくなるので嬉しい。

参考

https://lore.kernel.org/lkml/xmqqa6o3xj2e.fsf@gitster.g/T/#u


  1. git rebase -i で表示されるコミットごとの操作を指定するファイル。 ↩︎