@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Git で merge -> revert されたコミットをもう一度 merge したいときは revert を revert してから行う

Git で merge commit を revert したあと、再度 merge したい - blog.risouf.net

これと同じ状況に陥った。この記事に上記記事以上の情報は何もありません。自分用の覚書。

git-flow っぽい開発の仕方で、開発ブランチ develop にある機能が merge された。 merge コミットを M とする。その後 M は revert された。 revert コミットを W とする。その後リリースブランチ master に M プラスアルファの内容が hotfix として merge された。 merge コミットを M' とする。その後 M' を develop に merge して diff をみると内容が不完全、という状況。

同じ内容 == 同じ commit をあてなおそうとすると revert されたことは考慮せず歴史にすでに commit が存在するからスキップ、みたいな挙動になっているのだと理解。

復旧手順はこうやった。

  1. Create copy of develop branch, chore/merge-master-into-develop-1
  2. Revert W (revert "revert commit of merge commit (M)" on chore/merge-master-into-develop-1
  3. Merge master into chore/merge-master-into-develop-1
  4. Open PR from chore/merge-master-into-develop-1 to develop