はじめに
Qiita株式会社のカレンダーの14日目は @mayobimu が担当します。
間違えてコミットしてしまった時、差分を消す為の上書きコミットを作成→fixup→再度別コミットとして作成し直すことはありませんか?gitが苦手な私にはありました...
調べてみると簡単に分割できたのでその方法を紹介します。
前提
以下のb+cをbとcに分割したい
commit ec868 (HEAD -> main)
d
commit 377b
b+c
commit f0d0
a
手順
1. git log
を実行し分割したいコミットの1つ前のハッシュをコピーする
commit ec868 (HEAD -> main)
d
commit 377b
b+c
commit f0d0 #これ
a
2. コピーしたハッシュでrebase -i ○○
をする
# こんな感じのlog
pick 377b b+c
pick ec868 d
3. 分割したいコミットをeditに変更しエディタを終了させる
edit 377be2d b+c # 今回はここ
pick 98a98ba d
4. git reset HEAD^
でコミットを1つ前に巻き戻す
5. git st
でファイルを確認し、適切にコミットを行う
コミットを間違えたらgit rebase --abort
で2まで戻れます
git add b.rb
git commit -m "b"
git add c.rb
git commit -m "c"
# こんな感じのlog
commit 6507 (HEAD)
c
commit c74c
b
commit f0d0
a
6. 問題なければgit rebase --continue
分割したコミット以下のハッシュが変わるので注意
# 思った通りに分割ができていることが確認できる
commit ca36 (HEAD -> main)
d
commit 6507
c
commit c74c
b
commit f0d0
a
おわりに
fixupなどと組み合わせると綺麗なコミットログが作れますよ!
Qiita株式会社のカレンダー15日目は @tomoasleep と@masato930 が担当します!
ぜひ、Qiita株式会社のカレンダーを購読設定して、明日の記事もご覧いただけると嬉しいです。