Git

git commit --amendを使わずに特定のコミットの内容を修正する

コーヒーと共に優雅なコーディングに没頭。適宜コミットをしていると、あるタイミングで「この変更、2つ前のコミットにまとめたいな」という場合ありますよね。
そのようなことを行いたくてGoogleで検索してみると、大体git rebase -iで対象のコミットまで行って、git commit --amendで修正している記事が多いです。

これより手数の少ない方法がgit commit --fixupgit rebase -i --autosquashを利用した方法です。

  1. 現在の修正をgit addでステージングに追加します。
  2. git log --onelineなどを利用して、混ぜ込みたい対象のコミットのコミットハッシュをコピーします。
  3. コピーしたコミットハッシュを使ってgit commit --fixup <対象のコミットのコミットハッシュ>コマンドを実行します。そうすると!fixup <対象のコミットのタイトル>というコミットが作成されます。
  4. git rebase -i --autosquash <対象のコミットのコミットハッシュ>~ を実行します。
    • 注意点としては、-iオプションを設定すること・対象のコミットもrebase対象に含める必要があるため、コミットハッシュの末尾に~をつけることです。