新しいフォルダー

気になったことや勉強したことについて書いていきます

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コマンドは

「指定したコミットをやり直す」だろうか。。。