我与300多个冲突的文件进行了大规模的合并。我想使用mergetool来解决这些问题,但是我无法一次性完成所有这些工作。我怎样才能提交合并然后再回来并继续相同的合并?通常情况下,如果索引中存在冲突,git似乎不允许您提交。
答案 0 :(得分:13)
我假设“不能一次性做”你的意思是“在我完成之前想要做其他事情” - 因为你可以将部分解决的合并留在工作树中。否则。
首先,在您遇到任何麻烦之前,请注意您可以简单地创建另一个存储库的克隆 - 部分解析的合并可以保留在一个中,您可以在另一个中执行其他工作。
所有这一切,如果你真的想保存你已经完成的部分解决合并的工作,我最好的建议是使用git rerere
(重新使用RECRED REsolutions)。
要开始使用,请确保将rerere.enabled
设置为true - 这将涵盖大多数正常用例。它会导致git rerere
在合并冲突发生后立即自动运行 - 此时您将看到Recorded preimage for '<path>'
形式的消息。它在提交合并时也会自动运行;然后你会看到Recorded resolution for '<path>'.
形式的消息。然后,当出现相同的冲突帅哥时,可以重新使用这些分辨率。
现在,在您的使用案例中,将发生第一次自动触发 - 将记录预图像。但是你还没有准备好提交你的合并,所以在解决了一些冲突的文件并将它们标记为已解决(将它们添加到索引)后,你可以直接运行git rerere
(无参数) 。它将记录您已标记为已解决的所有内容的分辨率,但忽略尚未解决的内容。然后,您可以简单地销毁尝试合并(git reset --merge
),并在下次尝试时,重复使用录制的分辨率!