Git - 从特定提交开始合并

时间:2013-09-25 22:40:06

标签: git

假设我有一个主人和一个开发分支 - 开发有很多提交,主人不是为了简单起见:

Develop:

Commit 1
Commit 2
Commit 3
Commit 4
Commit 5
Commit 6

我想从master中删除一个没有任何这些提交的新功能分支。

但棘手的部分是我想从commit 3开始将开发合并到我的功能中。

我可以挑选,但实际上有比我简单的例子更多,更多的提交。

如何做到这一点?

2 个答案:

答案 0 :(得分:2)

你可以挑选:

git checkout -b newfeature master
git cherry-pick commit2..develop

如果不直接支持该语法,请使用:

git cherry-pick $(git rev-list commit2..develop)

注意: a..b范围表示法中的第一次提交未包含在修订列表中,谢谢Carl

否则,它看起来像是rebase --root ... --onto的情况。我总是在手册页中查找具体内容。

答案 1 :(得分:0)

如果提交3-6不依赖于提交1-2,则可以克隆分支,然后使用交互式基础将开发分支拆分为两个分支,以便历史记录如下:

develop1:master commit1 commit2 develop2:master commit3 commit4 commit5 commit6

然后,您可以使用merge合并两个不同的分支。否则,你将不得不使用樱桃采摘,正如另一个答案所说。这将有效,但你将失去分支关系的历史。

一般来说,为您正在处理的每个特定主题创建一个新分支是有意义的,更多的是在细粒度方面。本地分支机构很便宜,甚至远程分支也不差。如果你把事情放在不同的分支上,那么组织你的思路要容易得多。它还鼓励您以尽可能将问题分成独立模块化部分的方式工作,从而鼓励更好的系统设计,提高可测试性等。