2016-08-18 168 views
1

我有一個項目,我一直在Visual Studio中工作了一段時間,並且一直在Git倉庫中保存我的更改。讓我們把這個項目,它具有以下提交歷史分離合並在一起的兩個Git倉庫

A0-A1-A2-A3-A4-A5-A6 

後來我開始另一項目項目B,這是另一個Git倉庫工作。

B0-B1-B2-B3 

在某些時候,我決定,這兩個項目是真正直接關係到對方,我合併項目B到項目信息庫,並將其添加到項目中的Visual Studio解決方案。項目回購現在有兩個根提交A0和B0。

A0-A1-A2-A3-A4-A5-A6-M1 
        /
     B0-B1-B2-B3- 

在這一點之後,我假設這些項目是一個,不用擔心將我的工作分離到獨立的項目A和項目B分支。大多數提交的是雖然,有一些地方提交我做了更改爲A和B的

A0-A1-A2-A3-A4-A5-A6-M1-AB1-A7-B4-B5-AB2-B6-A8-A9 
        /
     B0-B1-B2-B3- 

但現在我已經決定了,我錯了合併,這些項目涉及到無論是項目A或B.項目並希望將兩個項目的歷史拆分回各自的git存儲庫。

A0-A1-A2-A3-A4-A5-A6-A7-A8-A9 

B0-B1-B2-B3-B4-B5-B6 

這兩個項目都是完全私人的項目,只有我一直在努力。因此重新佈局/重新創建所有提交不是問題。我一直在閱讀很多關於SO和網絡上其他地方的帖子,但仍然無法弄清楚最好的辦法就是分手。

回答

0

這對git rebase工作:

git clone current_repos new_repos_only_a ; cd new_repos_only_a 
git rebase -i A6 
# skip all B commits, pick all A commits, do not pick the merge commit (should be skipped by git automatically) 

(同爲當然B,在一個單獨的新的存儲庫)。