如何缩小.git文件夹

我目前的基地总的大小约。 200MB。

但我的.git文件夹具有惊人的5GB(!)大小。 因为我把我的工作推到了外部服务器上,所以我不需要任何大的本地历史logging…

我怎样才能缩小.git文件夹,以释放我的笔记本上的一些空间? 我可以删除比30天更旧的所有更改吗?

非常感谢任何帮助:)

你不应该删除超过30天的所有变化(我认为这是某种可能的利用git,但真的不推荐)。

你可以调用git gc --aggressive --prune ,它会在你的版本库中执行垃圾收集并修剪旧对象。 你有很多二进制文件(档案,图像,可执行文件)经常改变吗? 那些通常会导致巨大的.git文件夹(请记住,每个版本的git存储快照和二进制文件压缩很糟糕)

来自Linus :

相当于“git gc – aggressive” – 但做得很好* – 就是做(过夜)类似的东西

  git repack -a -d --depth=250 --window=250 

那里深度的东西就是三angular洲链条的深度(使旧的历史更长 – 这是值得的空间开销),窗口的事情是我们希望每个三angular洲候选人扫描的对象窗口有多大。

在这里,你可能想添加“-f”标志(这是“drop all old deltas”,因为你现在确实试图确定这个标志确实find了合适的候选者。

来源: http : //gcc.gnu.org/ml/gcc/2007-12/msg00165.html

我试过这些,但我的存储库还是非常大的。 问题是我不小心检查了一些生成的大文件。 经过一番search,我发现一个很好的教程,可以很容易地删除大型生成的文件。 本教程允许我将我的存储库从60 MB缩小到<1 MB。

http://stevelorek.com/how-to-shrink-a-git-repository.html

5GB和200MB是有点怪异的。 尝试运行git gc

但是,否则,除非将存储库分割成模块,否则不能减小.git目录的大小。

每个git仓库的克隆都是一个完整的仓库,可以作为一个服务器。 这是分布式版本控制的基本原则。

我更多地使用git作为同步机制而不是版本历史logging。 所以我对这个问题的解决方法是确保我所有的当前资源都处于令人满意的状态,然后删除.git并重新初始化回购。 磁盘空间问题解决了。 🙂 History gone :-(我这样做是因为我的回购是在一个小的USB密钥上,我不需要或者不需要我所有的历史logging,如果我有一个截断历史logging的方法,我会使用它。

如果我有兴趣保留我的历史logging,我将归档当前的存储库。 在某个时候,我可以克隆原始的存储库,复制新的回购的所有变化(让我们假设我没有做很多(任何)重命名或删除)。 然后作出一个大的承诺,将在新的回购中所做的所有更改视为旧回购中的单一提交。 是否有可能合并历史? 也许如果我使用了一个分支,然后删除了我不需要的对象。 (我没有足够的了解git内部的东西,就像这样开始鬼混)。