Git:通过重新定位大文件来生成干净的回购

时间:2015-04-16 18:06:10

标签: git version-control shared-libraries

啊,我记得当时我是一个git新手的那些日子,我把所有那些大型图书馆文件和我的项目一起提交......

但是现在我正在尝试重新设计这样一个旧项目,我想“净化”我学校服务器上存储的存储库(而且,如果没有获取失败,很难一次性下载这些MB中间!)

通过“purify”,我的意思是我想从现有的存储库创建另一个存储库,如果可能的话,维护“提交/分支”结构,但是要删除我选择的一些文件/文件夹。

详细说来,假设我有一个大文件夹/lib/以及最终的其他一些文件夹,我想完全分开。但是如果可能的话,我希望有一个干净,可逆的分离:在每次提交时,我都应该保留一些哈希值,或者任何可以给我一个关于/lib文件夹内容的提示。

理想的解决方案是拥有两个始终同步并具有“相同提交”的存储库

  • 只有代码的一个存储库,没有/lib folder
  • 一个存储库,具有相同的“提交引用”,但提交内容仅为/lib/文件夹的内容

换句话说,我正在尝试做的是人工重建某种依赖管理器(如果我从一开始就直接开始了一个maven ......叹息)

简而言之两个步骤:

  • 在每次提交中删除lib文件夹
  • 插入已丢失/lib增量的提交,一些信息或指针,我可以在其中找到以前存在的文件的信息(或者可能是另一个仅包含evlution的回购提交的链接/lib文件夹?

1 个答案:

答案 0 :(得分:1)

我相信你应该采用interactive rebase方法。

您可以使用edit标记标记包含某些库代码的提交。在重新定位时,您将能够删除该libarary代码并更改提交消息以指向原始提交代码。