我在窗户上。
由于各种原因,我们有多个不同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
答案 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)
我的方法是: