我们假设有两个分支,master
和slave
,它们编辑相同的文件和相同的行。最初,该文件的内容是如何在Git合并后重新格式化修补程序?
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
,其中rev1
和rev2
分别为master
和custom
分支机构的负责人,不包括与解决冲突有关的变化。 git-diff
格式化有效的修补程序,但省略提交消息。
我使用补丁,因为这是上游想要的,而我不在工作流的控制之中。我必须将需要解决冲突的补丁格式化,因为我也发布了我的回购并且不能重新分配。不幸的是,'git diff'不包含提交消息。 – sastanin
有一种方法可以让合并只有一位家长。从中获得补丁将为您提供所需的结果。 –
仅与一位家长合并?这怎么可能? “git-merge”是否应该“将两个或更多的开发历史结合在一起”? – sastanin