如何在解决冲突的过程中提交长Git合并

Ree*_*Law 11 git merge conflict commit

我与300多个冲突的文件进行了大规模的合并.我想使用mergetool来解决这些问题,但是我无法一次性完成所有这些工作.我怎样才能提交合并然后再回来并继续相同的合并?通常,如果索引中存在冲突,git似乎不允许您提交.

Cas*_*bel 13

我假设"不能一次性做"你的意思是"在我完成之前想要做一些其他的事情" - 因为你可以将部分解决的合并留在你的工作树中.

首先,在您遇到任何麻烦之前,请注意您可以简单地创建另一个存储库的克隆 - 部分解析的合并可以保留在一个中,您可以在另一个中执行其他工作.

所有这一切,如果你真的想保存你已经完成的部分解决合并的工作,我最好的建议是使用git rerere(REuse REcorded REsolutions).

首先,确保将rerere.enabled其设置为true - 这将涵盖大多数正常用例.它会导致git rerere在合并冲突发生后立即自动运行 - 此时您将看到表单的消息Recorded preimage for '<path>'.它在提交合并时也会自动运行; 然后你会看到表格的消息Recorded resolution for '<path>'..然后,当出现相同的冲突帅哥时,可以重新使用这些分辨率.

现在,在您的使用案例中,将发生第一次自动触发 - 将记录预图像.但是你还没有准备好提交您的合并,所以解决一些冲突的文件以及将它们标记为已解决后(将其添加到索引),您可以改为运行git rerere(无参数)直接.它将记录您已标记为已解决的所有内容的分辨率,但忽略尚未解决的内容.然后,您可以简单地销毁尝试的merge(git reset --merge),并在下次尝试时,重复使用录制的分辨率!