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
可能适用于您的许多情况。