我正在努力将一些代码上传到qemu,它希望修补程序以小的可管理块发送邮件列表。因此,我在我的git存储库中有三个分支:git补丁管理工作流程:将已更新的修补程序队列分支中的更改移植到合并的功能分支
master
,跟踪上游。feature
,有我所有的发展历史,包括尚未准备好上游的代码。这个定期与主人合并,并发布在github上。upstreaming
,补丁提交的待定队列,定期修改和重新发布反对主(因此,我不发布这一个,虽然每What's the Git approach to publish a patch queue?或许我可以这样做与一个合适的警告)。
每次我提交版本的补丁一系列的邮件列表,我得到的代码审查反馈和生成补丁系列的新版本之前(使用git rebase --interactive
和git commit --amend
)地址,在上游化分公司。这工作相当好。
但是,我还想保留feature
分支最新的这些变化。理想情况下,我想在feature
上记录一次提交,这相当于修补程序系列最后一次重新调整的所有更改,但是我还没有找到干净的方法来执行此操作。
如果我从upstreaming
合并到feature
,那么我需要每次手动解决大量的冲突,因为几乎(但不是完全)相同内容的相同文件似乎是独立创建的;即3路合并没有共同的祖先,也没有合并历史,因此新修订的每个后续合并似乎都重新引入了相同文件的稍微不同的副本。
我认为我想要做的是区分upstreaming
分支的vN和vN + 1,然后将其作为单个补丁应用于特征分支。但(缺乏手动差异和补丁)我还没有发现任何东西在处理这个。
或者使用[this](https://stackoverflow.com/a/34813665/2303202)来应用diff – max630