当应用补丁有什么办法来解决冲突?(When applying a patch is there an

2019-09-01 00:46发布

我是在Windows上。

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

很多时候,我想修复存储库中的一个问题,生成一个补丁,并将其应用到存储库B.这工作得很好,除非有冲突。

当重订我只是右键单击文件夹并使用tortioseGit并选择resolve选项。 这带来了一个很好的图形界面,让我通过我的工作发生冲突。

有没有什么办法与拒绝的补丁块做到这一点?

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

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

Answer 1:

要生成你的补丁做到以下几点:

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

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

git am -3 < changes.patch

-3会做,如果有冲突的三方合并。 在这一点上,你可以做一个git mergetool ,如果你想去一个GUI或只是使用vim手动合并文件(标准<<<<<<||||||>>>>>>解决冲突)。



Answer 2:

如果您经常运行到同一冲突集应用补丁的时候,基础重建或合并,那么你可以使用git rerere(重用记录分辨率)的功能。 这使您可以预先定义如何冲突应该根据您过去解决他们来解决。 见http://git-scm.com/blog/2010/03/08/rerere.html的是如何工作的细节。



Answer 3:

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

有它的照片在这里 。



Answer 4:

我的做法是:

  • 创建一个“一体化”分枝,其中文件是相同的
  • 该补丁适用于这个集成分支
  • 合并或重订其掌握(不知道是否重订在这里很有用,因为我不知道进一步施加补丁时会发生什么)


文章来源: When applying a patch is there any way to resolve conflicts?