当应用补丁时,是否有解决冲突的方法?

我在窗户上。

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

很多时候,我希望修复存储库 A 中的问题,生成一个补丁,并将其应用到存储库 B 中。除非存在冲突,否则这种方法可以很好地工作。

当重新定位时,我只需右键单击文件夹并使用 tortioseGit,然后选择解决选项。这让我想起了一个好人,让我解决我的冲突。

有没有办法通过拒绝补丁块来实现这一点?

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

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

TortoiseGit 有一个可以打开补丁文件的合并特性。

有一张它的照片。

要生成补丁,请执行以下操作:

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

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

git am -3 < changes.patch

如果有冲突,-3将进行三方合并。此时,如果您想转到 gui,或者只是使用 vim (标准的 <<<<<<||||||>>>>>>冲突解决方案)手动合并文件,那么您可以执行 git mergetool

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

我的方法是:

  • 创建一个“集成”分支,其中的文件是相同的
  • 将补丁应用到这个 Integration-Branch
  • 将它合并或重新建立基础(不知道重新建立基础在这里是否有用,因为我不知道在应用更多补丁时会发生什么)

用就是了

git apply -3 <patch_name>

它将允许你解决冲突