稍后恢复合并冲突解决

Posted

技术标签:

【中文标题】稍后恢复合并冲突解决【英文标题】:Resume a merge conflict resolution at a later time 【发布时间】:2019-04-19 04:03:12 【问题描述】:

情况

我正在合并文件,但我停止了,因为该收工了,但我还没有完成合并。

问题

我想确保我可以恢复合并,但我在网上找不到任何有关此的信息,所以我自己尝试了。结果是我现在有一个部分合并的文件和 .orig,但没有修改后的本地或远程。

问题

如何在不必重新开始的情况下恢复部分合并冲突解决方案?

我确实做了什么。

我将提交合并到当前分支。然后我跑了git mergetool,也就是meld。我说:“呃……时间不早了,我明天可以完成。”并保存了所有三个文件。然后我想“也许我应该检查以确保我明天可以恢复”,所以我再次尝试git mergetool,但它告诉我没有文件需要合并。

然后我什么都不做,让它处于未提交状态,认为此时我只能做更多的伤害。

我发现了什么。

我发现可能有用的最接近的东西是Reconflict the merge, after incorrect manual merge conflict resolution,它并不是特别有用。

这表明我保存我在其他地方(即mv file file.bu)进行硬重置,将备份文件移回原位,然后再次尝试合并,这样我至少不需要重新开始。

但是,由于我还没有承诺,与那张海报不同,我认为我可以做的更多。

【问题讨论】:

Git 对暂停和恢复合并的支持不是很好。我更喜欢避免 git mergetool 坚持不停止地做所有文件。如果您记得哪些文件已完成,哪些未完成,则可能有一种相对简单的恢复方法,但在让git mergetool 管理操作时,您仍然必须完全合并任何一个文件。 只有一个乱七八糟的文件。一般来说,我尽量避免一次合并(甚至提交)多个文件,除非更改是微不足道的。 在这种情况下,保存部分合并(将更新的文件移开)并使用git checkout -m <file> 恢复合并冲突和未合并状态。然后您可以再次运行git mergetool,或者只是编辑部分合并的文件并使用您的合并到目前为止的边文件重新进入合并过程。 无论出于何种原因,这都不起作用,我最终还是从头开始。下次我会更加小心。 这很奇怪。这表明 Git 不知何故从索引中丢失了撤消 (REUC) 记录。我不认为git mergetool 做任何会导致这种情况的事情,但我在这里可能是错的。 【参考方案1】:

由于您保存了文件,因此最简单的选择可能是重新启动合并。

【讨论】:

以上是关于稍后恢复合并冲突解决的主要内容,如果未能解决你的问题,请参考以下文章

还原合并提交后解决合并冲突

git合并分支冲突解决

Git 合并冲突之后怎么办?

GitGit 分支管理 ( 解决分支合并冲突 | 本地处理文件冲突 )

GitGit 分支管理 ( 解决分支合并冲突 | 本地处理文件冲突 )

Git 分支的创建、切换、合并以及解决冲突、删除