我怀疑与创建补丁并将它们重新组合成主分支。例如:
我在一个与master分开的分支中工作,我生成了5个提交更改。所以,我想将此提交作为社区补丁发送。以Linux内核为例。
其他开发人员在master分支中添加了新的提交,当我将我的5个补丁修改为master时,会出现一些冲突。
那么,我是否需要生成一个解决冲突的新补丁?那么,我是否需要发送5 + 1补丁(我的5次提交+ 1次冲突解决提交)?
我想知道发送修补程序和修复合并冲突的策略是什么。
答案 0 :(得分:1)
这不是“疑问”,这是一个问题。
我将我的5个补丁变成了主人,出现了一些冲突。
你是如何解决冲突的?
你应该必须解决它们来完成rebase,所以你的分支中仍然只有5个提交,而不是5 + 1。
如果您在分支上执行git log master..
,您应该会看到需要发送的提交。如果您正确地执行了rebase(并且没有提交冲突或破坏代码),那么仍然只有5个提交要发送。
因为冲突只存在于您的分支中,并且您应该在本地解决它们,否则其他任何人都不应该知道它们存在,因此您不需要向它们发送任何补丁来解决任何问题。
答案 1 :(得分:1)
解决这些冲突的最佳方法 - 不会产生不必要的"噪音"在你的补丁中,是在新主服务器上重新分支你的分支,然后创建你的补丁系列。这使您有机会解决任何冲突,而不会分散收件人的注意力,并且可以解决所有冲突问题。补丁。 (我相信这个工作流程在Linux内核的#34;入门"文档中进行了讨论(或至少提到过)。)
更新主分支
git checkout master
git pull
将您的更改重新定位到最新的上游HEAD(orig / master,master)
git checkout mybranch
git rebase master
# Resolve rebase conflicts here
创建补丁。此时,由于rebase,补丁应该干净地应用于上游HEAD。
git format-patch master
注意:这些命令未经测试,并且来自内存。
答案 2 :(得分:0)
使用git format-patch <since> | <revision range>
每次提交时,将每个提交及其补丁准备在一个文件中,格式化为类似于UNIX邮箱格式。此命令的输出便于电子邮件提交或与git am一起使用。
有两种方法可以指定要操作的提交。
1. A single commit, <since>, specifies that the commits leading to the tip of the current branch that are not in the history that leads to the <since> to be output. 2. Generic <revision range> expression means the commits in the specified range.