k-tokitoh

2019-09-04

gitでrevertしたら再revertが必要な例とその理由

git revert で注意すべきこと - Qiita

こちらの記事を読んで、「何が起きるか」はわかったけど「なぜこうなるか」がすぐに分からなかったのでメモ。

具体例

以下の例を考える。

問題が発生するパターン

ここでマージ後の master がどうなっているかというと…

% git checkout master % ls a.txt c.txt d.txt

当初 dev ブランチで追加した b.txt が見当たらない。

問題が発生する理由

問題を回避するやり方

いずれにせよ revert 以前の内容が必要なら、revert を revert すべし。

dev ブランチをそのまま伸ばす

こうすれば、当初 dev ブランチで作成した b.txt も最終的に master ブランチに残る。

% git checkout master % ls a.txt b.txt c.txt d.txt

ブランチを切り直す

この方法でも、当初 dev ブランチで作成した b.txt が最終的に master ブランチに残る。

% git checkout master % ls a.txt b.txt c.txt d.txt