ファイルX,Yを一回のコミットで追加したが、これをそれぞれのコミットに分割して追加したことにしたい
$ mkdir X
$ cd X/
$ git init
$ touch README.txt
$ git add README.txt
$ git commit -m "initial commit"
$ touch X Y
$ git add X Y
$ git commit -a -m "add X, Y"
ログ確認
$ git log
commit 6f04e67c167eda51089086644566983c25c9a828
Author: Nunocky <nunocky@example.com>
Date: Wed Apr 11 14:42:36 2018 +0900
add X, Y
commit a886aa67c6f2eba22ce19466bf4bec5cf67248f8
Author: Nunocky <nunocky@example.com>
Date: Wed Apr 11 14:41:45 2018 +0900
initial commit
最新のコミットを分割し、 X,Yをそれぞれのコミットで追加することにする。
git rebase -i HEAD^1
一行目を編集
-pick 6f04e67 add X, Y
+edit 6f04e67 add X, Y
エディタを終了すると rebaseが一時停止する
Stopped at 6f04e67... add X, Y
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
最新のコミットをリセットして
$ git reset HEAD^
X,Yをそれぞれ追加してコミット
$ git add X
$ git commit -a -m "X"
[detached HEAD ed4ff58] X
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 X
$ git add Y
$ git commit -a -m "Y"
[detached HEAD 835430c] Y
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 Y
最後に git rebase --continue
を実行。
$ git rebase --continue
Successfully rebased and updated refs/heads/master.
ログを確認
$ git log
commit 835430c1e950d5edf6cbcfb15bdaf59c1b34a5db
Author: Nunocky <nunocky@example.com>
Date: Wed Apr 11 14:47:45 2018 +0900
Y
commit ed4ff58c43b72148f1e05df78adc5ce6f7e66390
Author: Nunocky <nunocky@example.com>
Date: Wed Apr 11 14:47:39 2018 +0900
X
commit a886aa67c6f2eba22ce19466bf4bec5cf67248f8
Author: Nunocky <nunocky@example.com>
Date: Wed Apr 11 14:41:45 2018 +0900
initial commit
正直 rebaseしなくても resetだけでいいのではないかと思うのだが、なんだかよく分からない。