git - 我如何审计 git rerere 的决议?

标签 git git-merge git-rerere

背景

我目前正在解决启用 git rerere 的 merge 冲突。 git status显示一条未 merge 的路径。当我查看文件时,没有 <<<<<<< HEAD>>>>>>> <SHA>识别冲突的标记,这告诉我 rerere 已经完成了它的工作并根据我过去的做法解决了冲突。

我想确认 rerere 的决议是正确的。

我正在处理的 merge 过程非常复杂,涉及对 Linux 内核做出贡献的多个远程。昨天我对几个 Remote 进行了测试 merge ,目的是识别冲突、通知维护人员,然后丢弃生成的(肯定损坏的)内核。在这样做的同时,我做了几个粗心的冲突解决方案只是为了移动到下一个 Remote ,并调用了 git rerere forget <pathspec>在我完成后的所有冲突路径上,包括我现在正在处理的路径。由于我告诉 rerere 忘记这条路径,我不知道为什么它在这次运行中解决了任何问题,而且我担心它应用了我昨天所做的修复,而我并不关心结果是否正确。

问题

有什么办法可以看到应用了解决方案后又解决了哪些冲突?

我想避免重新开始 merge ,因为这是一个漫长的过程,我们还没有完全自动化。另外,因为我昨天试图告诉 rerere 忘记这条路,但它今天仍然应用了一个解决方案,我想如果我不找出原因,我最终会处于同样的位置 git rerere forget <pathspec>先失败。

相关问题
Undo a git rerere resolution that was done in a rebase <-- 解决方案需要重新启动 merge
Are there any downsides to enabling git rerere? <-- 只讨论 git rerere forget <pathspec>

跟进注释/问题
我刚刚尝试输入 git rerere forget没有 pathspec,我知道它已被弃用,但如果我理解正确,应该让 rerere 忘记所有决议。我重新运行 merge ,但它仍然对文件应用了分辨率。我还完全禁用了 rerere 并第三次运行 merge ,这样我就可以看到冲突,并且 rerere 确实应用了我昨天所做的三心二意的决议。为什么是forget没有正确丢弃我不想重复使用的分辨率?

最佳答案

你可以切换到 un-rerere'd 的 merge 结果

git checkout -m path/to/file

然后用

重新应用它
git rerere

关于遗忘的烦恼,你是在冲突还在的时候遗忘的吗?忘记适用于“ 中的当前冲突”

$ 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

关于git - 我如何审计 git rerere 的决议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37887739/

相关文章:

git - 如何在 Gogs 服务器中定义 pull 请求模板

git:显示默认/配置的寻呼机命令

git - 我将如何在 Git 中编写预 merge Hook ?

git merge 相当于 git rebase --onto

git - 推送和 merge 之间的区别

git - git merge vs git rebase用于 merge 冲突场景

git - 压缩包含 merge 提交的前几十个 git 提交

用于避免日志中出现大量 merge 噪音的 Git 工作流程

git - 如何制作 git rebase 并保留提交时间戳?