149

我在窗户上。

由于各种原因,我们有多个不同 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

4 回答 4

310

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

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

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

git am -3 < changes.patch

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

于 2013-06-06T18:00:35.160 回答
14

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

于 2013-06-11T02:24:52.357 回答
5

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

这里有一张照片。

于 2013-06-06T13:58:51.320 回答
4

我的做法是:

  • 创建文件相同的“集成”分支
  • 将补丁应用到这个集成分支
  • 合并或变基到master(不知道变基在这里是否有用,因为我不知道应用更多补丁时会发生什么)
于 2017-09-07T13:13:00.613 回答