git - 如何将 git 存储库一分为二,但同时保留两者的 git 历史记录?
问题描述
我有一个完全混乱的存储库,是一个非常好的候选者,可以拆分和分离以减少 CI 构建时间。但是,我想在两者中保留当前的 Git 历史记录,同时通过向它们提交这些重大更改来从任何一个存储库中删除我不再需要的部分。
我想知道是否有适当的方法来做到这一点。我考虑过从当前的存储库中分叉两个新的存储库,每个存储库都在删除他们不想保留的组件方面发生变化?这是一种方法吗?或者这里的最佳做法是什么?
解决方案
这是我将如何做到的。我将使用 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
推荐阅读
- python - 将 .dat 转换为 csv 时,我的代码会更改输出值
- mysql - 我可以在 MainThread 中进行快速 SQL 调用吗?德尔福
- javascript - 为什么这个进度条在更新时会“闪烁”,我该如何解决?
- c# - 如何使用 Appium C# 处理 Android 权限对话
- html - 锚标签继承自非预期元素
- javascript - 是否可以从同一项目中的外部 Javascript 代码访问角度应用程序数据
- python - Python 3 ctypes 调用需要通过另一个结构间接引用缓冲区的函数
- .net-core - 如何确保在 web 应用程序退出时终止在 aspnetcore 后台服务中启动的进程
- c# - 我有 mvc5 网站我想在写评论时在 storydetails 视图中添加评论,这条评论出现在 _index 但在另一个页面中
- spring-boot - 无论CascadeTypes如何,都无法在不删除父实体的情况下删除子实体?