Git:生成在“feature”分支上进行的所有提交的补丁,而不引用提交ID

时间:2012-06-04 23:32:53

标签: git branch patch format-patch

我们在两个分支中维护了两个版本的应用程序:freemastermaster是我们应用程序的高级版本)。这些分支非常相似,但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

1 个答案:

答案 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

听起来确实如此,但只需将免费功能与免费功能合并到高级分支中,就可以改善您的工作流程。