skr*_*sme 6 git git-merge git-rerere
背景
我目前正在解决与启用git rerere的合并冲突.git status显示一条未合并的路径.当我查看文件时,没有<<<<<<< HEAD或>>>>>>> <SHA>标记识别冲突,这告诉我rerere已经完成了它的工作并根据我过去的方式解决了冲突.
我想确认rerere的决议是正确的.
我正在进行的合并过程非常复杂,涉及到Linux内核的多个遥控器.我昨天做了几个遥控器的测试合并,目的是识别冲突,通知维护者,然后丢弃最终的(肯定已损坏的)内核.在这样做的时候,我做了几个不小心的冲突解决方案,只是为了继续下一个遥控器,并且git rerere forget <pathspec>在我完成之后调用了所有冲突的路径,包括我正在处理的那个.因为我告诉rerere忘记这条路径,我不知道为什么它在这次运行中解决了任何问题,我担心它应用了我昨天做的修复,当时我不在乎结果是否正确.
问题
是否有任何方法可以查看在已经应用解决方案后重新解决的冲突?
我想避免重新启动合并,因为这是一个漫长的过程,我们还没有完全自动化.此外,因为我试图告诉rerere昨天忘记了这条路,但它今天仍然应用了一个解决方案,我想如果我不知道为什么git rerere forget <pathspec>先失败,我会最终处于相同的位置.
相关问题
撤消在rebase中完成的git rerere解决 方案< - 解决方案需要重新启动合并
启用git rerere是否有任何缺点?< - 只讨论git rerere forget <pathspec>
跟进注意/问题
我刚尝试输入git rerere forget没有pathspec,我知道这是不赞成的,但如果我理解正确,应该让rerere忘记所有的决议.我重新合并,它仍然对文件应用了一个解决方案.我也完全禁用了rerere并且第三次运行合并,所以我可以看到冲突,而rerere确实应用了我昨天所做的半心半意的决议.为什么forget不正确地丢弃我不想重用的解决方案?
你可以切换到unrererere'd合并结果
git checkout -m path/to/file
Run Code Online (Sandbox Code Playgroud)
然后重新申请
git rerere
Run Code Online (Sandbox Code Playgroud)
关于忘记烦恼,你是否在冲突仍然活跃时做了忘记?忘记适用于"<pathspec>中的当前冲突"
Run Code Online (Sandbox Code Playgroud)$ 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
| 归档时间: |
|
| 查看次数: |
313 次 |
| 最近记录: |