Git:生成对“提交”的所有提交的修补程序;特写“;不引用提交ID的分支

Git:生成对“提交”的所有提交的修补程序;特写“;不引用提交ID的分支,git,branch,patch,format-patch,Git,Branch,Patch,Format Patch,我们在两个分支中维护应用程序的两个版本:free和master(master是我们应用程序的高级版本)。这些分支非常相似,但是主分支有一些额外的应用程序功能,而免费版没有,因此我们需要继续维护这两个分支 我们需要定期修复bug或向free分支添加功能,完成后我们需要将这些功能应用到master分支。当我有这些工作要做时,我将基于free启动一个新的分支,例如,newfeature。完成该功能后,newfeature有X个新提交 在我将newfeature合并回free之前,我想知道我可以使用什么

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

我们需要定期修复bug或向
free
分支添加功能,完成后我们需要将这些功能应用到
master
分支。当我有这些工作要做时,我将基于
free
启动一个新的分支,例如,
newfeature
。完成该功能后,
newfeature
有X个新提交

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

git format-patch aa99f9..e94904
git checkout master
git cherry-pick `git merge-base newfeature free`..newfeature
就我所知,我必须实际查找分支
newfeature
时的特定提交ID,以及
newfeature
中的最后一次提交,这是一个拖拽。我对提交ID不感兴趣,也不想输入它们

我希望有一个单一的命令,我可以始终如一地使用它,git将找出我所说的提交。每次都是相同的模式:给定分支
newfeature
,我想从
newfeature
free
共同祖先到
newfeature
最新提交生成一个提交补丁

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


注意:好的,我不能使用
git-rebase
来完成这项任务,因为这将把整个
free
分支合并到
master
上。我只想将
newfeature
分支特有的提交合并到
master
上,具体来说,您需要的是:

git format-patch `git merge-base newfeature free`..newfeature
这样做可能会节省一些时间:

git format-patch aa99f9..e94904
git checkout master
git cherry-pick `git merge-base newfeature free`..newfeature
根据您的工作流程,您可能只需在合并功能之前创建修补程序。i、 e:

git checkout newfeature
git rebase free
git format-patch free

这听起来是一个不错的选择,但您的工作流程可以通过简单地将免费的premium功能建立在免费的基础上并将免费功能合并到premium分支中来加以改进。

我相信您正在寻找
git merge base
。例如,有关合并基查找和使用的复杂版本,请参见,但简单的
a…B
可能适用于您的许多情况。