我有一个项目非常需要修复错误,但我也一直在开发一些新功能。我想将我最近的所有功能提交移动到不同的分支,因为下一个版本需要主要是错误修复,而不是未经测试的功能。我看过另一个线程,据说我可以使用 'git branch branchname (sha1-of-commit)' 来创建分支。我的问题是:一旦我创建了这个分支,是否有可能将一些最近的提交从 master 移动到新分支?(移动的提交不应再出现在主分支中)。
问问题
307 次
1 回答
2
您可以git cherry-pick
提交到新分支。每个都cherry-pick
应用给定提交的更改,有效地复制它们。
git checkout branchname
git cherry-pick <sha-of-interesting-commit>
从主分支中删除提交是更复杂的。如果您还没有推送这些提交,您可以rebase
在其自身上进行 master 的交互,然后通过从提交的提交列表中删除它们来删除提交。
示例:这会重新调整当前分支上的最后五个提交
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
实际上是通过创建新的提交链来重写历史。
于 2013-06-25T21:54:46.140 回答