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



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

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

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

从主分支中删除提交是trikcier。如果您还没有推送这些提交,那么您可以在其自身上执行master的交互式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实际上通过创建新的提交链来重写历史。

相关内容

最新更新