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

dgjrabp2  于 2022-09-21  发布在  Git
关注(0)|答案(5)|浏览(153)

我在Windows上。

由于各种原因,我们有不同SVN分支的多个GIT示例。

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

在重新设置基址时,我只需右击文件夹,使用tortioseGit,然后选择Resolve选项。这带来了一个很好的图形用户界面,让我可以解决我的冲突。

有没有办法用被拒绝的补丁块来实现这一点?

以下是我当前创建/应用补丁程序的方法

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

vd2z7a6w1#

要生成面片,请执行以下操作:

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

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

git am -3 < changes.patch

如果存在冲突,-3将执行三向合并。此时,如果您想转到图形用户界面或仅使用VIM手动合并文件(标准的<<<<<<||||||>>>>>>冲突解决方案),则可以执行git mergetool

g6ll5ycj

g6ll5ycj2#

如果您在应用补丁、重新设置基础或合并时经常遇到相同的冲突集,则可以使用git reerere(重用记录的解决方案)功能。这使您可以根据过去解决冲突的方式预定义解决冲突的方式。有关其工作原理的详细信息,请参阅http://git-scm.com/blog/2010/03/08/rerere.html

ycl3bljg

ycl3bljg3#

TortoiseGit有一个合并功能,可以打开补丁文件。

这里有一张它的照片。

c6ubokkw

c6ubokkw4#

我的做法是:

  • 创建“集成”--文件完全相同的分支
  • 将补丁程序应用于此集成-分支机构
  • 合并或将其重新基址为master(不知道在这里重新基址是否有用,因为我不知道当应用进一步的补丁时会发生什么)
r8uurelv

r8uurelv5#

只需使用

git apply -3 <patch_name>

它将允许您修复冲突

相关问题