【问题标题】:How to keep only recent versions of a Git repository如何仅保留 Git 存储库的最新版本
【发布时间】:2019-12-11 03:45:48
【问题描述】:

我有一个 GitLab 存储库,用于每日备份。一开始,repo 的大小是 1GB。几天后,存储库达到 12GB。我想 GitLab 正在储存旧版本。当我使用自己的服务器来托管我的 GitLab 存储库时,我的记忆力已经饱和。有什么方法可以让 GitLab 只存储我的备份仓库的 5 个最新版本(5 天)?

【问题讨论】:

标签: git github gitlab


【解决方案1】:

正如其他一些评论者已经指出的那样,Git 并不是真的要以这种方式备份文件。特别是因为听起来您正在备份大型二进制文件。每次在 Git 中更改大型二进制文件时,Git 都必须存储该文件的完整新副本。对于基于文本的文件类型,Git 可以存储增量并且效率更高。

您可以考虑使用Git LFS,但在这里,如果您每次提交时都添加一个新的二进制副本,这可能不会有什么不同。如果是这种情况,那么您最好使用某种云存储服务而不是版本控制系统。

【讨论】:

  • 谢谢。我正在使用文本文件。这些文本文件包含 mysql 查询。提交的大小或多或少保持不变,因为它是每天推送的同一个文件(但有修改的查询)。 GitLab 会存储历史记录,而这段历史记录会随着时间的推移而堆积起来,因此会消耗大量内存。
  • 你是说一个文件占用 12GB @LeeWyi?
  • 霍根有一个有效点。如果您真正存储文本文件,那么 Git 会有效地存储增量,并且每次提交时都不应该复合。因此,要么您的文本文件非常大,要么它们非常大,并且您每次提交都会更改很大一部分。
  • 是的。它们是包含 MySQL 转储数据的文本文件(每个大约 10MB)。有时只更改了几个文件,有时更改了大约 90% 的文件
【解决方案2】:

您可以在某个时间点获取代码并添加到新的存储库中——然后以任何方式归档旧的存储库。还要考虑 git 在压缩二进制数据方面要差得多——如果你有很多编译版本,你要保存在你的 repo 中,这可能就是它变得如此之大的原因。如果您停止在 git 中跟踪二进制文件,它可能会变得更易于管理。

【讨论】:

  • 谢谢。我想自动化这个过程,因为我有数百个回购。如何停止跟踪?
  • @LeeWyi -- 在 git 中很容易停止跟踪 -- 你只需添加到忽略列表中。
  • 将文件添加到忽略列表将阻止它们上传到 Git。我最近的文件(> 10 天)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-28
  • 2013-08-06
  • 1970-01-01
相关资源
最近更新 更多