git rebase -i edit
【追記】
本項の検証は誤りがあります
ここのサイトにコマンド毎の解説があります。必読
gitのコミットの歴史を改変する(git rebase) 1 / 2 - けんごのお屋敷
*******************************
rebaseのeditコマンドについて検証する
↓ツリー
*****************
* aa7779f (HEAD, master) 2015-02-22 rebase_user@com edit_3
* 0390d3e 2015-02-22 rebase_user@com edit_2
* 2c4a097 2015-02-22 rebase_user@com edit_1
(略)
*****************
↓ファイル内容
*****************
MASTER_GIT
CCCDEDEDFGG
REBASE_TEST
DEVELOP_XXX_BBB
AAA
deve_1_deve_1
edit_1
edit_2
edit_3
*****************
○コマンドを打つよ(git rebase -i HEAD~3)
*****************
pick 2c4a097 edit_1
edit 0390d3e edit_2
pick aa7779f edit_3
*****************
Stopped at 0390d3e... edit_2
①You can amend the commit now, with
git commit --amend
②Once you are satisfied with your changes, run
git rebase --continue
①あなたはgit commit --amendでコミット内容を改正することができます
②変更内容に満足したらgit rebase --continueで処理を行います
という意味でしょうか。
↓ファイル内容を以下のように編集
*****************
MASTER_GIT
CCCDEDEDFGG
REBASE_TEST
DEVELOP_XXX_BBB
AAA
deve_1_deve_1
edit_1 modi
edit_2
*****************
○指示どおりコマンドを実行する(git commit --amend)
↓
○コミットコメントを編集する(「edit_2」→「edit_2を追記」に修正)
↓
○コマンドを打つよ(git rebase --continue)
sample.txt: needs update
Working tree is dirty
「作業ツリーが汚れている(グーグル翻訳)」不安になるメッセージが出力され
ツリーを確認してみると
*****************
* 71b1dd8 (HEAD) 2015-02-22 rebase_user@com edit_2を追記
| * aa7779f (master) 2015-02-22 rebase_user@com edit_3
| * 0390d3e 2015-02-22 rebase_user@com edit_2
|/
* 2c4a097 2015-02-22 rebase_user@com edit_1
*****************
うわぁ。。。
ファイル内容は
*****************
MASTER_GIT
CCCDEDEDFGG
REBASE_TEST
DEVELOP_XXX_BBB
AAA
deve_1_deve_1
edit_1 modi
edit_2
*****************
edit_3の内容は消えている。
というより、edit_2まで遡りコミットしなおしているのでedit_3は存在してないことになっている感じだろうか。
git statusで確認すると
# Not currently on any branch.
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: sample.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
何やら変更をコミットしろ的なメッセージが。
ツリーをみるとコミットされてるような気もするけど。。。
* 71b1dd8 (HEAD) 2015-02-22 rebase_user@com edit_2を追記
とりあえずaddしてcommit
ツリーは以下のように
*****************
* 0944642 (HEAD) 2015-02-22 rebase_user@com commit
* 71b1dd8 2015-02-22 rebase_user@com edit_2を追記
| * aa7779f (master) 2015-02-22 rebase_user@com edit_3
| * 0390d3e 2015-02-22 rebase_user@com edit_2
|/
* 2c4a097 2015-02-22 rebase_user@com edit_1
*****************
ん?となったので各コミットの履歴を確認
○git show 0944642
*****************
DEVELOP_XXX_BBB
AAA
deve_1_deve_1
-edit_1
+edit_1 modi
edit_2
*****************
○git show 71b1dd8
*****************
AAA
deve_1_deve_1
edit_1
+edit_2
*****************
!!??
edit_2のコミットを別ブランチを切ってやりなおしてるように見える
○git rebase --continueを打ってみる
Successfully rebased and updated refs/heads/master.
*****************
* 3ab4d98 (HEAD, master) 2015-02-22 rebase_user@com edit_3
* 0944642 2015-02-22 rebase_user@com commit
* 71b1dd8 2015-02-22 rebase_user@com edit_2を追記
* 2c4a097 2015-02-22 rebase_user@com edit_1
*****************
ツリーが統合された
纏めると
editコマンドは
「指定したコミットをやり直す」だろうか。。。