Reconflict the merge, after incorrect manual merge conflict resolution

感情迁移 提交于 2019-12-06 13:55:31

问题


After resolving a merge conflict and committing, it has become apparent that my manual merge conflict resolution was wrong. I have already staged, committed, and pushed the repo. How can I get the conflicting file back into the conflicting state, such that I might resolve it differently?

Note that it is too late for git checkout -m as I've already committed the incorrect merge resolution.


回答1:


Starting from a clean working directory, I would hard reset back to before the merge, start a new branch, and perform the merge again. You could then perform a diff between the original merge result branch and your new branch to get a patch file to apply on the original branch. Since you have already pushed your result, you will want to create a new commit correcting the merge commit rather then performing a force push after editing the history.

Overly detailed version:

If your current history looks something like this and c is the merge commit you want to change.

a - c - d <-HEAD/master
   /  
  b

Starting from a completely clean working directory.

git branch old_merge <sha1 of c>  // create branch for original merge
git checkout -b new_merge <sha1 of a> // create and checkout branch before merge
// re-merge branch

This will create something like this...

 old_merge
    ∨
a - c - d <-master
  X  
b - c' <-HEAD
    ∧
 new_merge

That's probably really confusing but hopefully you get the idea. Now you can perform a diff between the old_merge branch and the new_merge branch to get the changes you will need to make on master.

git diff old_merge..new_merge

You could use the patch UNIX utility to apply the difference between the two branches after you have checked out master again.

git checkout master
git diff old_merge..new_merge | patch -p1

Hopefully this helps. Let me know if you are confused by anything.



来源:https://stackoverflow.com/questions/24887615/reconflict-the-merge-after-incorrect-manual-merge-conflict-resolution

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!