5

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

foo bar

然后在分支中将slave其编辑为

foo bar baz

现在 branch 的用户slave格式化 patch( git format-patch master) 并将其发送给 branch 的用户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, whererev1rev2are 分别是mastercustom分支的负责人,不包括与冲突解决相关的更改。git-diff格式化一个有效的补丁,但忽略提交消息。

4

1 回答 1

1

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

合并不是您可以从中制作补丁的东西。它只会跟随第一个父母。您可以通过使用git diff和格式化补丁来获得所需的内容,同时指定 2 个不同的提交来区分。

希望这可以帮助。

于 2011-06-18T00:06:41.890 回答