如何在Git中合并后重新格式化补丁?

时间:2011-06-17 22:24:04

标签: git merge format-patch

我们假设有两个分支masterslave,它们编辑同一个文件和同一行。最初,文件的内容是

foo bar

然后在分支slave中编辑成

foo bar baz

现在分支slave的用户格式化补丁(git format-patch master)并将其发送给分支master的用户。同时,在分支master中编辑相同的文件并成为

foo bar spam eggs

无法应用修补程序,master要求slave合并并制作新的修补程序。当master合并到slave并且冲突得到解决时,是时候重新格式化补丁了。提交图如下所示:

slave:               master:

foo bar baz spam eggs
    |             \
    |              \
    |                foo bar spam eggs
    |                    |
foo bar baz              |
       \                 |
        \                |
         +---------  foo bar

slave上的最新提交(合并)如下:

@@@ -1,1 -1,1 +1,1 @@@
- foo bar baz
 -foo bar spam eggs
++foo bar baz spam eggs

但是,如果我们现在运行git format-patch master,我们仍然可以获得与以前完全相同的补丁,但不考虑合并和冲突解决方案:

@@ -1 +1 @@
-foo bar
+foo bar baz

如何格式化适用于最新母版的补丁?我想在没有rebase的情况下这样做。

更新:git format rev1..rev2,其中rev1rev2分别是mastercustom分支的负责人,不包括与冲突解决相关的更改。 git-diff格式化有效的补丁,但省略了提交消息。

1 个答案:

答案 0 :(得分:1)

为什么使用补丁?你应该在回购之间推拉。

合并不是你可以制作补丁的东西。它将仅跟随第一个父母。您可以使用git diff获取所需内容并对patch进行格式化,同时指定2个不同的提交来区分。

希望这有帮助。