假设有两个分支,master
和slave
,它们编辑同一个文件和同一行。最初,文件的内容是
foo bar
然后在分支slave
中编辑成
foo bar baz
现在分支slave
的用户格式化补丁(git format-patch master
)发送给分支master
的用户.同时,在分支master
中编辑同一个文件,变成
foo bar spam eggs
补丁打不开,master
请求slave
merge 打新补丁。当 master
merge 到 slave
并且冲突解决后,就该重新格式化补丁了。提交图如下所示:
slave: master:
foo bar baz spam eggs
| \
| \
| foo bar spam eggs
| |
foo bar baz |
\ |
\ |
+--------- foo bar
slave
上的最新提交( merge )看起来像:
@@@ -1,1 -1,1 +1,1 @@@
- foo bar baz
-foo bar spam eggs
++foo bar baz spam eggs
但是,如果我们现在运行 git format-patch master
,我们仍然会得到与之前完全相同的补丁,它没有考虑 merge 和冲突解决:
@@ -1 +1 @@
-foo bar
+foo bar baz
如何格式化适用于最新母版的补丁?我想在没有 rebase
的情况下做到这一点。
更新:git format rev1..rev2
,其中rev1
和rev2
是master
和custom
分别分支,不包括与解决冲突相关的更改。 git-diff
格式化一个有效的补丁,但忽略提交消息。
最佳答案
为什么要使用补丁?您应该在 repo 协议(protocol)之间推 pull 。
merge 不是你可以从中制作补丁的东西。它只会跟随第一个 parent 。您可以通过使用 git diff
和 patch 格式,同时指定要区分的 2 个不同提交来获得您想要的内容。
希望这对您有所帮助。
关于git - 在 Git 中 merge 后如何重新格式化补丁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6392425/