【问题标题】:How to reduce disk space usage in a large repository?如何减少大型存储库中的磁盘空间使用量?
【发布时间】:2015-10-04 02:06:25
【问题描述】:

我有一个大约 1 年的开发历史的 git 存储库,它已经是 37GB。如何以删除旧历史记录的方式最小化大小?也就是说,我只需要最近2个月的历史,其他的可以删除。

【问题讨论】:

  • .git 目录有多大?
  • @HimanshuMishra 您好,先生。 .git目录大约35G。
  • 37G?!我想你已经添加了可执行文件、电影、照片......恕我直言,这是一个不好的做法,你应该只添加你需要的文件(为了测试,可能是一个或两个多媒体文件)
  • 是的,我也这么认为。您的一段代码包含 35GB 的情况非常罕见。 1 GB 很少见。您是否不小心提交了一些不需要的大文件?还可以按大小对文件进行排序,看看顶部有没有不需要的文件?
  • this 有帮助吗?

标签: git disk


【解决方案1】:

三个主要选项是:

关于最后一点,请参阅“How do I remove the old history from a git repository?”,使用类似这样的脚本(使用 2 个月前提交的 SHA1 作为参数)

#!/bin/bash
git checkout --orphan temp $1
git commit -m "Truncated history"
git rebase --onto temp $1 master
git branch -D temp

# The following 2 commands are optional - they keep your git repo in good shape.
git prune --progress # delete all the objects w/o references
git gc --aggressive # aggressively collect garbage; may take a lot of time on large repos

由于它重写了历史记录,您将需要一个git push --force
由于OP正在推送到git.assembla.comsee discussion),this issue clearly states

您需要启用--force 选项。
这是通过 Git 存储库设置选项卡 完成的。您需要成为该空间的“所有者”才能查看设置选项卡。

【讨论】:

  • 我将shell脚本保存为git-remove-history.sh,先生,我该如何执行? bash git-remove-history.sh ?
  • @rkevx21 你使用的是什么版本的 Git。您使用的是什么操作系统(Windows、Linux、Mac)(在哪个版本)
  • @rkevx21 什么版本的 Linux(键入uname -a)以及使用什么版本的 Git? (输入git --version
  • Linux rkevx21 3.13.0-53-generic #89-Ubuntu SMP Wed May 20 10:34:39 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
  • @rkevx21 好的。一个简单的./git-remove-history.sh <SHA1> 应该就足够了(请确保首先备份了您的存储库,或者在执行此操作之前在某个 Git 存储库托管服务器中可用)。将 <SHA1> 替换为您想要开始历史记录的提交的 SHA1(两个月前的一次提交)
猜你喜欢
  • 2015-10-09
  • 1970-01-01
  • 2019-11-14
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多