試試這個:
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
請停止編輯問題和答案。謝謝。 –