我正在进行一项大型 merge ,其中包含 300 多个冲突文件。我想使用 mergetool 解决这些问题,但我不可能一次完成所有这些。我如何提交 merge 然后稍后返回并继续相同的 merge ?通常情况下,如果索引中存在冲突,git 似乎不允许您提交。
最佳答案
我假设“不能一口气完成”你的意思实际上是“想在我完成之前做一些其他事情”——否则你可以将部分解决的 merge 留在你的工作树中。
首先,在遇到任何麻烦之前,请注意您可以简单地创建存储库的另一个克隆 - 部分解析的 merge 可以保留在一个中,而您可以在另一个中进行其他工作。
综上所述,如果您真的想保存为部分解决 merge 所做的工作,我最好的建议是使用 git rerere
(重复使用记录的解决方案)。
开始前,请确保 rerere.enabled
设置为 true - 这将涵盖大多数正常用例。它导致git rerere
在发生 merge 冲突后立即自动运行 - 此时您将看到 Recorded preimage for '<path>'
形式的消息.当您提交 merge 时,它也会自动运行;然后您将看到 Recorded resolution for '<path>'.
形式的消息.当出现相同的冲突 hunk 时,可以稍后重复使用这些解决方案。
现在,在您的用例中,将发生第一个自动触发 - 原像将被记录。但是您还没有准备好提交 merge ,因此在解决了一些冲突文件并将它们标记为已解决(将它们添加到索引)之后,您可以改为运行 git rerere
(没有参数)直接。它将记录您标记为已解决的所有内容的解决方案,但忽略仍 Unresolved 所有内容。然后,您可以简单地销毁尝试的 merge (git reset --merge
),下次尝试时,记录的解决方案将被重新使用!
关于git - 如何在解决冲突的过程中提交长时间的 Git merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4996809/