首页 > 解决方案 > 如何将 git 存储库一分为二,但同时保留两者的 git 历史记录?

问题描述

我有一个完全混乱的存储库,是一个非常好的候选者,可以拆分和分离以减少 CI 构建时间。但是,我想在两者中保留当前的 ​​Git 历史记录,同时通过向它们提交这些重大更改来从任何一个存储库中删除我不再需要的部分。

我想知道是否有适当的方法来做到这一点。我考虑过从当前的存储库中分叉两个新的存储库,每个存储库都在删除他们不想保留的组件方面发生变化?这是一种方法吗?或者这里的最佳做法是什么?

标签: gitrepository

解决方案


这是我将如何做到的。我将使用 original-repo、new-repo1 和 new-repo2 作为您的存储库的替身:

cd ~
git clone original-repo new-repo1
cd new-repo1
git rm -r stuff-you-dont-want
git commit

cd ~
git clone original-repo new-repo2
cd new-repo2
git rm -r different-stuff-you-dont-want
git commit

现在,您将拥有两个不同的文件夹,其中包含两个不同的 repo 副本。然后,您可以更新原始遥控器以指向不同的远程存储库(例如在 Github 上)。

cd ~/new-repo1
git remote set-url origin new-repo1-url
git push -u origin master

cd ~/new-repo2
git remote set-url origin new-repo2-url
git push -u origin master

推荐阅读