【发布时间】:2012-06-09 00:37:35
【问题描述】:
我们在两个分支中维护两个版本的应用程序: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 的共同祖先到@@上的最新提交的提交补丁987654342@.
是否有一些变更集表达式可以避免手动查找提交 ID 的需要?
P.S.: AFAIK,我不能使用git rebase 来执行此任务,因为这会将整个free 分支合并到master。我只想将newfeature 分支独有的提交合并到master。
【问题讨论】:
-
我相信您正在寻找
git merge-base。参见,例如,stackoverflow.com/questions/1527234/… 以了解合并基础查找和使用的复杂版本,但简单的A...B可能适用于您的许多情况。
标签: git branch patch format-patch