2016-08-18 45 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,在一个单独的新的存储库)。