我们在两个分支中维护了两个版本的应用程序:free
和master
(master
是我们应用程序的高级版本)。这些分支非常相似,但master
分支有一些free
版本没有的额外应用程序功能,因此我们需要维护这两个分支。
我们经常需要修复错误或向free
分支添加功能,我们需要在master
分支完成后应用它们。当我有这样的工作时,我将基于free
开始一个新的分支,例如,newfeature
。当我完成该功能时,newfeature
有X个新提交。
在我将newfeature
合并回free
之前,我想知道我可以使用哪个命令从newfeature
中包含的所有提交生成补丁,现在需要应用到master
。目前,我只是这样做:
git format-patch aa99f9..e94904
据我所知,我必须实际查找分支newfeature
时的特定提交ID,以及newfeature
中的最后一次提交,这是一个阻力。我对提交ID并不感兴趣,我不想输入它们。
我希望有一个我可以一直使用的命令,其中 git将找出我正在谈论的提交。每次都是相同的模式:给定分支newfeature
,我想从 newfeature
的共同祖先和free
生成一个提交补丁到< strong>最新提交newfeature
。
是否有一些变更集表达式可以避免手动查找提交ID?
P.S。:AFAIK,我无法使用git rebase
执行此任务,因为这会将整个free
分支合并到master
。我只想将newfeature
分支独有的提交合并到master
。
答案 0 :(得分:1)
具体而言,您要求的是:
git format-patch `git merge-base newfeature free`..newfeature
这样做可以节省一些时间:
git checkout master
git cherry-pick `git merge-base newfeature free`..newfeature
根据您的工作流程,您可能只需在合并功能之前创建修补程序。即:
git checkout newfeature
git rebase free
git format-patch free
听起来确实如此,但只需将免费功能与免费功能合并到高级分支中,就可以改善您的工作流程。