“拆分和拼接”是否可以管理包含大量文件的GIT仓库?

时间:2019-02-25 20:15:30

标签: git

多年来,我们的一个项目已经进行了大量的重构。除了娱乐之外,我们几乎从来没有回溯超过2个月前,但是保持项目历史仍然很重要。问题在于,使用某个云提供商进行一些日常传输时,这已经开始使我们花费大量时间。

基于这个原因,我想存档整个项目,包括GIT仓库,并开始一个全新的仓库。或者只是擦拭所有两个月以上的东西,然后从那里继续。

到目前为止很容易做到。但是如果两年后我想重复此过程,将所有历史记录备份到旧历史记录上

说明:

  1. 现在:使用旧的repo 2014-2017将.git存档
  2. 后来:从2017年至2020年将.git与回购归档,但对旧的回拨2014-2017年保持连续性,好像什么也没发生。

目的是使项目目录灵活且易于转移,但又不会丢失历史记录。如果需要,我们应该始终能够以连续的方式(而不是单独的档案)访问某个地方的完整历史记录。

欢迎其他建议。

2 个答案:

答案 0 :(得分:1)

  

目的是使项目目录灵活且易于转移,但又不会丢失历史记录。如果需要,我们应该始终能够以连续的方式(而不是单独的档案)访问某个地方的完整历史记录。

因此,假设您现有的存储库称为BigRepo。对于您想要的东西,我认为您可以创建一个名为NewRepo的克隆并从日常使用中退出BigRepo -锁定访问权限,以便没有人可以直接推送到BigRepo,只有几个人可以合并。接下来,从NewRepo中删除大部分旧提交(例如,两个月以上的所有提交),并让所有人开始使用NewRepo。

这为您提供了每天要更改的更小的存储库,并且您仍将所有旧提交安全地存储在BigRepo中。您可以不时地从NewRepo向BigRepo发出拉取请求,以便将所有新提交都复制到BigRepo中,并保持所需的连续历史记录。从BigRepo合并最新提交后,您将仅在BigRepo中拥有绝对完整的历史记录,但是您可以随时将最新合并到BigRepo中。这里的重点是将对BigRepo的更改汇总起来,以使您的日常备份不会永远花费。

答案 1 :(得分:0)

另一个答案:git-gc。实际上,这实际上减少了文件数量(使用--aggressive选项将文件数量从1100减少到50。

https://git-scm.com/docs/git-gc