git - 如何在解决冲突的过程中提交长时间的 Git merge

标签 git merge commit conflict

我正在进行一项大型 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/

相关文章:

git - merge 具有不同行尾字符的文件

Gitolite - 如何创建用户?

git - 如何 merge 到远程标签或提交 ID

perl - SVN 提交而无需 checkout 或工作副本

git - 归咎于不同位置的文件的早期版本

提交压缩的 Git 发布分支

python - Pandas 合并和求和数据帧

python(pandas)在数据帧内合并,无需for循环

Git 提交未更改的文件

svn - 在 Tortoise SVN 中向用户预提交显示一条消息