我有一个项目,我已经在Visual Studio中工作了一段时间,并将我的更改保存在Git存储库中。我们称之为项目A,它具有以下提交历史记录
A0-A1-A2-A3-A4-A5-A6
稍后我开始研究另一个项目B,它位于另一个Git存储库中。
B0-B1-B2-B3
在某些时候,我认为这两个项目实际上是直接相关的,我将Project B合并到Project A存储库中,并将其添加到Project A Visual Studio解决方案中。 Project A repo现在有两个根提交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上和网上其他地方的很多帖子,但仍然无法找出最好的方法来解决这个问题。
答案 0 :(得分: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
也是如此,在一个单独的新存储库中)。