Git:如何从旧版本创建分支,并从那时起有选择地添加提交

时间:2013-06-25 21:48:55

标签: git git-branch

我有一个非常需要修复错误的项目,但我也在开发一些新功能。我想将我最近的所有功能提交移到另一个分支中,因为下一个版本需要主要是错误修复,而不是未经测试的功能。我已经看到另一个线程,据说我可以使用'git branch branchname(sha1-of-commit)'来创建分支。我的问题是:一旦我创建了这个分支,是否有可能将一些更新的提交从master转移到新的分支? (移动的提交不应再出现在主分支中)。

1 个答案:

答案 0 :(得分:2)

您可以git cherry-pick提交新分支。每个cherry-pick应用给定提交的更改,有效地复制它们。

git checkout branchname
git cherry-pick <sha-of-interesting-commit>

从主分支中删除提交非常简单。如果你没有推送这些提交,你可以在主服务器上进行交互式rebase,然后通过从提交的提交列表中删除提交来删除提交。

示例:这会重新定义当前分支上的最后五次提交

git rebase --interactive HEAD~5

它会显示一个提交列表,您可以在其中删除不需要的提交

pick 1fc6c95 Patch A
pick 6b2481b Patch B
pick dd1475d something I want to split
pick c619268 A fix for Patch B
pick fa39187 something to add to patch A

有关详细信息,请参阅https://help.github.com/articles/interactive-rebase

请注意cherry-pick副本,而不是移动,rebase --interactive实际上通过创建新的提交链来重写历史记录。