我有一个项目,我已经在Visual Studio中工作了一段时间,并将我的更改保存在Git存储库中。我们称其为项目A,它具有以下提交历史
A0-A1-A2-A3-A4-A5-A6
后来我开始做另一个项目project B,它在另一个Git存储库中。
B0-B1-B2-B3
在某种程度上,我决定这两个项目确实彼此直接相关,我将项目B合并到项目A的存储库中,并将其添加到项目A的Visual Studio解决方案中。项目A的回购现在有两个根提交A0和B0。
A0-A1-A2-A3-A4-A5-A6-M1
/
B0-B1-B2-B3-
在此之后,我假设这些项目是一个,并且不麻烦将我的工作分为独立的项目A和项目B分支。大多数提交与项目A或项目b相关,尽管有一些提交我同时更改了A和b。
A0-A1-A2-A3-A4-A5-A6-M1-AB1-A7-B4-B5-AB2-B6-A8-A9
/
B0-B1-B2-B3-
但是现在我决定合并这两个项目是错误的,我想把这两个项目的历史记录拆分到各自的git存储库中。
A0-A1-A2-A3-A4-A5-A6-A7-A8-A9
B0-B1-B2-B3-B4-B5-B6
这两个项目都是完全私人的项目,只有我一直在做。因此,重新建立/重新创建所有提交不是问题。我读了很多关于SO和其他地方的文章,但仍然不能找出最好的方法来分割这个
这是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
也一样,在一个单独的新存储库中)