在应用补丁时,有什么方法可以解决冲突吗?

时间:2013-04-24 11:07:56

标签: git git-am git-apply

我在窗户上。

由于各种原因,我们有多个不同svn分支的git实例。

我想多次修复存储库A中的问题,生成补丁并将其应用到存储库B.除非存在冲突,否则这种方法很好。

当重新定位时,我只需右键单击该文件夹并使用tortioseGit并选择解析选项。这带来了一个很好的gui,让我解决我的冲突。

有没有办法用拒绝的补丁块完成这个?

这是我目前创建/应用补丁的方法

git format-patch master --stdout > c:\\patch\\file.patch
git apply --reject --ignore-space-change --ignore-whitespace c:\\patch\\file.patch

4 个答案:

答案 0 :(得分:209)

要生成修补程序,请执行以下操作:

git format-patch --stdout first_commit^..last_commit > changes.patch

现在,当您准备好应用补丁时:

git am -3 < changes.patch
如果存在冲突,-3将进行三向合并。此时,如果您想要使用gui或仅使用vim手动合并文件(标准git mergetool<<<<<<||||||冲突解决方案,您可以执行>>>>>> )。

答案 1 :(得分:10)

如果您在应用补丁,重新定位或合并时经常遇到相同的冲突集,那么您可以使用git rerere(重用记录的分辨率)功能。这允许您根据过去如何解决冲突来预先定义冲突的解决方式。有关其工作原理的详细信息,请参阅http://git-scm.com/blog/2010/03/08/rerere.html

答案 2 :(得分:3)

TortoiseGit具有可以打开补丁文件的合并功能。

有一张照片here

答案 3 :(得分:1)

我的方法是:

  • 创建&#34;整合&#34; -Branch文件相同
  • 将补丁应用于此Integration-Branch
  • 将其合并或改装为掌握(不知道rebase在这里是否有用,因为我不知道在应用更多补丁时会发生什么)