LoginSignup
16
3

More than 1 year has passed since last update.

commitを分割したいときはこれ!

Last updated at Posted at 2022-12-13

はじめに

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株式会社のカレンダーを購読設定して、明日の記事もご覧いただけると嬉しいです。

16
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
3