我在命令行完全做到了這一點,但我打算從SourceTree插入屏幕截圖來說明這是怎麼回事。
首先得到承諾從C5 ID(50da9c3)提交,並把在剪貼板或TextEdit或某事的前7或8位 - 你會需要它後來
確認一下,這是我們的初始狀態:
下面是步驟來得到你想要的:
創建一個新的無根分支開始動工建設承諾關閉指定基數
的
git symbolic-ref HEAD refs/heads/base
現在從混帳刪除所有文件和目錄
git rm --cached -r .
現在所有的文件都是「未跟蹤」從本地工作目錄中刪除
git clean -d --force
現在創建什麼也沒有提交在其中(這將是其他所有內容的構建)。
git commit --allow-empty -m'Initial Commit'
你的樹應該是現在這個樣子:
現在櫻桃挑C5提交(你對剪貼板什麼)
git cherry-pick 50da9c3
現在將主分支重新根據基地分支
git rebase --onto base --root master
現在你可以刪除基地和C4-C5分支
git branch -d base
git branch -D c4-c5branch
請記住'初始提交'是一個沒有文件的空提交,所以不要被愚弄。 C5提交實際上是第一個基於內容的提交。
我在C6以後開始切斷,但是任何未來的提交當然都應該按照原樣進行。 – sly 2012-04-09 23:49:23
我在想,如果將每個提交恢復到它自己的文件夾,並且從頭開始用'init',然後以正確的順序複製每個版本和'commit',它是否會更清晰。這不是一個git解決方案,但它是一種解決方法,實際上可能會更快。 – 2012-04-09 23:52:50
非常感謝Randolph。然而,我對git解決方案非常感興趣,以便了解它。 (也有一個在線 - 但未分享 - 鏡像,我想推動和完成) – sly 2012-04-09 23:53:42