はじめに
git のコミット修正にいつも苦戦しているので、残しておきます。
可能な限りわかりやすく記載するつもりですが、不明瞭な点、追記した方がいい点などがございましたら、合わせてご教授ください。
この記事の目的
gitのコミットを積んだ後、「うわ、この修正もあのコミットに乗せたかった」という事態が私は頻繁に発生するので、その時のための積み方をメモしておきます。
状態
下記のような状態で、index.html.slim
を再び修正したとします。
願望 0b89ee99b89da11ae0d2e03c0b1f18f51bafed7d
のコミットに乗せたい。
$ git log
commit 47d2f082439c53f7c7e566a6d262cbed86d7fc39
Author: Me <mail_address>
Date: Wed Apr 10 23:01:10 2024 +0900
fix edit.html.slim
commit 0b89ee99b89da11ae0d2e03c0b1f18f51bafed7d
Author: Me <mail_address>
Date: Wed Apr 10 23:00:20 2024 +0900
fix index.html.slim
commit 046936fca80c70b2d43aae35c1bbda23f20ac5ed
Author: Me <mail_address>
Date: Wed Apr 10 22:59:05 2024 +0900
fix show.html.slim
対応
まず、修正した index.html.slim
をステージして、混ぜたいコミットのIDを指定してコミットします。
$ git commit --fixup 0b89ee99b89da11ae0d2e03c0b1f18f51bafed7d
[hogehoge 2addf9f32] fixup! fix index.html.slim
1 file changed, 1 insertion(+), 1 deletion(-)
$ git log
commit 2addf9f32fed7f18bbacf9e4c3349b1c682c9dcc (HEAD -> hogehoge)
Author: Me <mail_address>
Date: Wed Apr 10 23:16:40 2024 +0900
fixup! fix index.html.slim
commit 47d2f082439c53f7c7e566a6d262cbed86d7fc39
Author: Me <mail_address>
Date: Wed Apr 10 23:01:10 2024 +0900
fix edit.html.slim
commit 0b89ee99b89da11ae0d2e03c0b1f18f51bafed7d
Author: Me <mail_address>
Date: Wed Apr 10 23:00:20 2024 +0900
fix index.html.slim
commit 046936fca80c70b2d43aae35c1bbda23f20ac5ed
Author: Me <mail_address>
Date: Wed Apr 10 22:59:05 2024 +0900
fix show.html.slim
次に、↑で指定したコミットIDの1つ前を指定して、下記のコマンドを叩きます。
fix show.html.slim
のコミットIDです。
$ git rebase -i --autosquash 046936fca80c70b2d43aae35c1bbda23f20ac5ed
何かが開くので、:wq
で閉じます。
そうすると、コミットIDが振り直され、fixup!
も消えました。
$ git log
commit 3eb5332e505246a05784522b41b6d66681630c65
Author: Me <mail_address>
Date: Wed Apr 10 23:01:10 2024 +0900
fix edit.html.slim
commit 1473f188d3f9edd951c8310a083e0e86ca8bf1a3
Author: Me <mail_address>
Date: Wed Apr 10 23:00:20 2024 +0900
fix index.html.slim
commit 046936fca80c70b2d43aae35c1bbda23f20ac5ed
Author: Me <mail_address>
Date: Wed Apr 10 22:59:05 2024 +0900
fix show.html.slim