revert したコミットを revert してみる修行
revert したコミットを revert したらどうなるのか実験。元に戻ってくれることを期待。次のシェルスクリプト fine.sh を作成。
# 最初は 1 から 5 までの数字が一行ごとに並んだファイル num を作る。 # git 管理する。最初のコミット A。 mkdir first; cd first; seq 5 > num git init; git add .; git commit -m 'first commit'; cd .. # 上流リポジトリ repos を作って、そこに作業用ディレクトリから push する。 # push できれば作業用ディレクトリ first は要らないから消しちゃう。 mkdir repos; cd repos; git --bare init --shared; cd .. cd first; git push ../repos master; cd .. rm -fr first # 新たなリポジトリを sidea に作る。 git clone repos sidea; cd sidea # num から 3 を除くコミット B を作る。 grep -v 3 num > tmp; mv tmp num; git commit -a -m 'remove 3' # num に 6 を加えるコミット C を作る。 echo 6 | cat num - > tmp; mv tmp num; git commit -a -m 'add 6' # コミット B を revert するコミット D を作る。 git revert --no-edit HEAD~1 # num に 7 を加えるコミット E を作る。 echo 7 | cat num - > tmp; mv tmp num; git commit -a -m 'add 7' # コミット D を revert するコミット F を作る。 git revert --no-edit HEAD~1
実行。
[takeyuki@sunya gitest]$ mkdir 4200 && cd 4200 [takeyuki@sunya 4200]$ sh ../fine.sh [takeyuki@sunya 4200]$ cd sidea
ログを見てみる。
[takeyuki@sunya sidea]$ git log --pretty=short commit ffe64256021be4657e93018a18e13c0fd232f991 Author: Takeyuki Kojima <khojima@nifty.com> Revert "Revert "remove 3"" commit 29eedf2ed4cfc4bd40ccbb58367816020475381e Author: Takeyuki Kojima <khojima@nifty.com> add 7 commit 6832a35e2bca1125cbc3d05e0de30a4723616b82 Author: Takeyuki Kojima <khojima@nifty.com> Revert "remove 3" commit 962a6695ad614a4ff82c40f583007bc0d3a638ae Author: Takeyuki Kojima <khojima@nifty.com> add 6 commit d1d65e4e3e55140bd1e6ba95c3d6a7945238b3a1 Author: Takeyuki Kojima <khojima@nifty.com> remove 3 commit bc98767ca0921428def3c8a58adf1fa3c8fead54 Author: Takeyuki Kojima <khojima@nifty.com> first commit
ふむ。
[takeyuki@sunya sidea]$ cat num 1 2 4 5 6 7
ちゃんと「3 を削除する」変更が効いている。じゃあ、最初に revert したときはどうだったかと言うと、
[takeyuki@sunya sidea]$ git show 6832a35 commit 6832a35e2bca1125cbc3d05e0de30a4723616b82 Author: Takeyuki Kojima <khojima@nifty.com> Date: Thu Dec 9 19:36:56 2010 +0900 Revert "remove 3" This reverts commit d1d65e4e3e55140bd1e6ba95c3d6a7945238b3a1. diff --git a/num b/num index de50652..b414108 100644 --- a/num +++ b/num @@ -1,5 +1,6 @@ 1 2 +3 4 5 6
ちゃんと「「3 を削除する」を取り消す」変更が効いている。