LoginSignup
9
9

More than 5 years have passed since last update.

git revertした後にマージ漏れが発生することがある

Posted at

(わりと特殊な状況だと思うけど・・・)
安易なgit revertによる事故に遭遇したので備忘録をつける。

現象

開発ブランチをメインブランチにマージして、バグってたのでメインブランチをgit revertした。
その後、開発ブランチでバグを修正してメインブランチにマージし直したら、マージされないファイルが出た。

原因

git revertで戻したファイルが、それ以降の開発ブランチで編集されていなかったため、マージ対象にならなかった。

こんな状況

my-featureでXXX.rbとYYY.rbを編集してマージした状態

*   commit 9965401bafd800bec9ea0ce8fa75d8d0d5c8af25
|\  Merge: 3d7c60f cf474a6
| |
| |     Merge branch 'my-feature'
| |
| * commit cf474a61754a26e0ca053aeaff21a990fa3ff780
|/
|       開発コミット

M       XXX.rb
M       YYY.rb
|
* commit 3d7c60fd8127b32f96785093e17334a059cfc0e3

バグってたことが発覚したのであわててrevert

* commit b855c5e9ebee1117e33c0689309ba613d21c8dfe
|     Revert "Merge branch 'my-feature'"
|
|     This reverts commit 9965401bafd800bec9ea0ce8fa75d8d0d5c8af25, reversing
|     changes made to 3d7c60fd8127b32f96785093e17334a059cfc0e3.

M       XXX.rb
M       YYY.rb
|
*   commit 9965401bafd800bec9ea0ce8fa75d8d0d5c8af25
|\  Merge: 3d7c60f cf474a6
| |     Merge branch 'my-feature'
| |
| * commit cf474a61754a26e0ca053aeaff21a990fa3ff780
|/
|       開発コミット

M       XXX.rb
M       YYY.rb
|
* commit 3d7c60fd8127b32f96785093e17334a059cfc0e3

"そのままの状態で"my-featureで作業を継続。ZZZ.rbを修正しないといけなかったので対応してマージしなおした。

*   commit 724e3feb28195e61ca179784fea226106f8bf4fd
|\  Merge: b855c5e 11ac0c1
| |
| |     Merge branch 'my-feature'
| |
| * commit 11ac0c10984ee49515ac5077d386ef671be4547f
| |
| |     修正漏れ対応

M       ZZZ.rb
| |
* | commit b855c5e9ebee1117e33c0689309ba613d21c8dfe
| |
| |     Revert "Merge branch 'my-feature'"
| |
| |     This reverts commit 9965401bafd800bec9ea0ce8fa75d8d0d5c8af25, reversing
| |     changes made to 3d7c60fd8127b32f96785093e17334a059cfc0e3.

M       XXX.rb
M       YYY.rb
| |
* |   commit 9965401bafd800bec9ea0ce8fa75d8d0d5c8af25
|\ \  Merge: 3d7c60f cf474a6
| |
| |       Merge branch 'my-feature'
| |
| * commit cf474a61754a26e0ca053aeaff21a990fa3ff780
|/
|       開発コミット

M       XXX.rb
M       YYY.rb
|
* commit 3d7c60fd8127b32f96785093e17334a059cfc0e3

この時点でmy-featureの作業が全部マージされた気になるが、実際はZZZ.rbの修正分しかマージされていない(XXX.rbとYYY.rbの変更分はすでにマージ済みなので)

解決方法

  • 開発ブランチを使い続けるときは、開発ブランチでrevertするなり、対応を直接入れるなりしてマージする
  • メインブランチにrevertを当てた場合は、開発ブランチを切り直して最初からやり直す
    • rebaseしても同じかな
9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9