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

sas*_*nin 5 git merge format-patch

我们假设有两个分支,master并且slave,它们编辑同一个文件和同一行.最初,文件的内容是

foo bar
Run Code Online (Sandbox Code Playgroud)

然后在分支slave中编辑成为

foo bar baz
Run Code Online (Sandbox Code Playgroud)

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

foo bar spam eggs
Run Code Online (Sandbox Code Playgroud)

无法应用修补程序,并master要求slave合并并创建新修补程序.何时master合并slave并解决冲突,是时候重新格式化补丁.提交图如下所示:

slave:               master:

foo bar baz spam eggs
    |             \
    |              \
    |                foo bar spam eggs
    |                    |
foo bar baz              |
       \                 |
        \                |
         +---------  foo bar
Run Code Online (Sandbox Code Playgroud)

最新的提交(合并)slave看起来像:

@@@ -1,1 -1,1 +1,1 @@@
- foo bar baz
 -foo bar spam eggs
++foo bar baz spam eggs
Run Code Online (Sandbox Code Playgroud)

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

@@ -1 +1 @@
-foo bar
+foo bar baz
Run Code Online (Sandbox Code Playgroud)

如何格式化适用于最新主控的补丁?我想没有这样做rebase.

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

Ada*_*ruk 1

你为什么使用补丁?您应该在存储库之间进行推拉。

合并不是你可以用来制作补丁的东西。它将仅跟随第一个父级。您可以通过使用git diff补丁并格式化它来获得您想要的内容,同时指定要区分的 2 个不同提交。

希望这可以帮助。