3

我们在两个分支中维护我们应用程序的两个版本:freemastermaster是我们应用程序的高级版本)。这些分支非常相似,但是该master分支有一些free版本没有的额外应用程序功能,因此我们需要保持这两个分支持续运行。

定期我们需要修复错误或向free分支添加功能,我们需要在完成后将其应用到master分支。当我有这样的工作要做时,我会开始一个基于free调用的新分支,例如newfeature. 当我完成这个功能时,newfeature有 X 个新的提交。

在我newfeature重新合并之前,free我想知道我可以使用什么命令从newfeature现在需要应用到的所有提交中生成补丁master。目前,我只是这样做:

git format-patch aa99f9..e94904

据我所知,我必须实际查找分支时的具体提交 ID newfeature,以及最后一次提交newfeature,这是一个拖累。我对提交 ID 不感兴趣,我不想输入它们。

我希望有一个我可以持续使用的命令,git 将找出我正在谈论的提交。每次都是相同的模式:给定分支newfeature,我想生成一个从共同祖先newfeaturefree最新提交newfeature的提交补丁。

是否有一些变更集表达式可以避免手动查找提交 ID 的需要?

PS:AFAIK,我不能git rebase用来执行此任务,因为这会将整个free分支合并到master. 我只想将newfeature分支独有的提交合并到master.

4

1 回答 1

1

具体来说,您要的是:

git format-patch `git merge-base newfeature free`..newfeature

这样做可能会节省一些时间:

git checkout master
git cherry-pick `git merge-base newfeature free`..newfeature

根据您的工作流程,您可能只需要在合并功能之前创建补丁。IE:

git checkout newfeature
git rebase free
git format-patch free

听起来确实如此,但您的工作流程可以通过简单地将免费功能基于免费并将免费功能合并到高级分支来改进。

于 2013-02-04T17:21:57.223 回答