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

时间:2011-02-14 20:16:06

标签: git merge commit conflict

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

1 个答案:

答案 0 :(得分:13)

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

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

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

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

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