试试这个:
git branch original-tip
git branch feature2
git checkout -b feature1
git rebase -i HEAD~5 # replace 5 with the number of commits to go back
# before any of this work occurred
现在标记所有提交与“编辑”,并删除不具有相关的工作特点1.保存并退出任何线路。现在您将被提示编辑这些提交。添加你需要的任何东西,然后登台,然后
git rebase --continue
重复这个过程,直到rebase完成。
git checkout feature2
对feature2应用与之前相同的步骤。在此之后,您将拥有2个独立的功能和一个分支,指向您将它们放在一起的位置。
要添加:
还有另一种方法来完成此操作。
git checkout -b start HEAD~5
git checkout -b feature1
git branch feature2
现在使用结账和或樱桃采摘制作分支。这是获取每次提交所需的确切树的更人工方式。感兴趣的是添加和重置的补丁选项。另外这个语法git的结帐是在这种情况下非常有用:
git checkout <some sha1> -- some files
的Git让你完成你想要什么的许多方面。根据您的提交的独立程度,您可以选择一种方法而不是另一种方法。
如果feature1和feature2的代码在单独的提交中(或者甚至可能是单独的文件),我认为rebasing可能是要走的路。不幸的是,我不太了解如何使用“rebase”为您提供具体的解决方案。 –
如果您对feature1和feature2进行了单独提交,只需分支并执行“rebase -i master”(交互式转置)。然后在feature2分支中忽略关于feature1的提交,反之亦然。 HTTP://book.git-scm。com/4_interactive_rebasing.html – lbolla
请停止编辑问题和答案。谢谢。 –