背景
我目前正在解决与启用git rerere的合并冲突。 git status
显示了一条未合并的路径。当我查看该文件时,没有<<<<<<< HEAD
或>>>>>>> <SHA>
标记来识别冲突,这告诉我rerere已经完成了它的工作并根据我过去的方式解决了冲突。 / p>
我想确认rerere的决议是正确的。
我正在处理的合并过程非常复杂,涉及到Linux内核的多个遥控器。我昨天做了几个遥控器的测试合并,目的是识别冲突,通知维护者,然后丢弃最终的(肯定已损坏的)内核。在这样做时,我做了几个不小心的冲突解决方案,只是为了继续下一个遥控器,并在我完成后在所有冲突的路径上调用git rerere forget <pathspec>
,包括我正在处理的那个。因为我告诉rerere忘记这条路径,我不知道为什么它在这次运行中解决了任何问题,我担心它应用了我昨天做的修复,当时我不在乎结果是否正确。
问题
有什么方法可以看出在已经应用了解决方案之后重新解决了哪些冲突?
我想避免重新启动合并,因为这是一个很长的过程,我们还没有完全自动化。此外,由于我试图告诉rerere昨天忘记这条路径,但今天它仍然应用了一个解决方案,我想如果我没有找到git rerere forget <pathspec>
首先失败的原因,我会最终处于相同的位置。 / p>
相关问题
Undo a git rerere resolution that was done in a rebase&lt; - 解决方案需要重新启动合并
Are there any downsides to enabling git rerere?&lt; - 仅讨论git rerere forget <pathspec>
跟进注释/问题
我刚刚尝试输入没有pathspec的git rerere forget
,我知道这已被弃用,但如果我理解正确,应该让rerere忘记所有分辨率。我重新合并,它仍然对文件应用了一个解决方案。我也完全禁用了rerere并且第三次运行合并,所以我可以看到冲突,而rerere确实应用了我昨天所做的半心半意的决议。为什么forget
没有正确地丢弃我不想重复使用的解析?
答案 0 :(得分:6)
您可以使用
切换到未撤消的合并结果git checkout -m path/to/file
然后用
重新应用它git rerere
关于忘记烦恼,你是否在冲突仍然活跃时做了忘记?忘记适用于“&lt; pathspec&gt;”中的当前冲突
$ git checkout master^1 Warning: you are leaving 1 commit behind, not connected to any of your branches: 9e2db79 test3 HEAD is now at ca1fca7... Make a change to file (on master) $ git merge master^2 Auto-merging file.txt CONFLICT (content): Merge conflict in file.txt Resolved 'file.txt' using previous resolution. Automatic merge failed; fix conflicts and then commit the result. $ git rerere forget file.txt Updated preimage for 'file.txt' Forgot resolution for file.txt $ vi file.txt # old resolution's still in the worktree $ git checkout -m file.txt # now it's gone there too