gpt4 book ai didi

git - 在 Git 中 merge 后如何重新格式化补丁?

转载 作者:太空狗 更新时间:2023-10-29 13:26:57 27 4
gpt4 key购买 nike

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

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,其中rev1rev2mastercustom 分别分支,不包括与解决冲突相关的更改。 git-diff 格式化一个有效的补丁,但忽略提交消息。

最佳答案

为什么要使用补丁?您应该在 repo 协议(protocol)之间推 pull 。

merge 不是你可以从中制作补丁的东西。它只会跟随第一个 parent 。您可以通过使用 git diff 和 patch 格式,同时指定要区分的 2 个不同提交来获得您想要的内容。

希望这对您有所帮助。

关于git - 在 Git 中 merge 后如何重新格式化补丁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6392425/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com