初めてコミットを分割してみた
1つのコミットがでかくなりすぎて困っていたので、コミットを分割する術を学びました。 そもそも細かくコミットしろという話なのですが、それはひとまず置いておきます。
test1.txt
とtest2.txt
の作成を1つのコミットで行ってしまったので、2つに分けたいという場合について書いていきます。
全体の流れは以下の通りです。
1. 分割したいコミットの一つ前のコミットの状態に戻る。
2. test1.txt
の作成だけコミットする。
3. test2.txt
の作成だけコミットする。
4. 元の作業していた状態に戻る。
手順
1. 分割したいコミットの1つ前のコミットの状態に戻る。
git rebase -i {分割したいコミットID}~
の実行~
は1つ前と言う意味です。- コミットIDは
git log
やgit log --oneline
で確認できます。
下の画像の黄色い文字列の部分です。
下の画像のようにテキストエディタが立ち上がるので、変更したいコミットの左端に書いてあるpick
をedit
に変更して保存、終了します。
すると、下の画像のように説明が表示され、edit
に変更したコミットをした直後の状態に移動します。
git reset HEAD^
の実行
これにより、test1.txt
とtest2.txt
が作成されただけでコミットもaddもされていない状態になります。
2. test1.txt
の作成だけコミットする。
test1.txt
をaddしてコミットするだけです。
git add test1.txt git commit -m "test1.txtを追加"
3. test2.txt
の作成だけコミットする。
test1.txt
のときと同様にコミットします。
4. 元の作業していた状態に戻る
git rebase --continue
を実行する。
以下のように表示されればおっけーです。
git log
やgit log --oneline
で確認するとコミットが書き換わっていることがわかります。
途中で作業を誤ってしまったり、よく分からなくなってしまった場合には、
git rebase --abort
を実行することで手順を踏む前の状態に戻ります。