有没有办法减小 git 文件夹的大小?

似乎我的项目越来越大,与每个 git commit/push。有办法清理我的 Git 文件夹吗?

195483 次浏览

我不知道你想要什么。首先,当然每次提交/压入目录时,目录都会变得稍微大一点,因为它必须存储这些额外的提交。

但是,您可能需要 git gc,它将“清理不必要的文件并优化本地存储库”(手册)。

另一个可能相关的命令是 git clean,它将 删除从您的树(手册)取消跟踪文件。

一个场景是,你的 git 回购将得到 说真的与每次提交是一个你提交的二进制文件,你定期生成。它们的存储效率不如文本文件.

另一种是你在 回购(这是一个 免疫球蛋白的极限)内有大量的文件,而不是几个子回购(作为子模块管理)。

关于 Git 空间的文章中,AlBlue 提到:

请注意,Git (以及 Hg 和其他 DVCS)确实存在这样一个问题: (大型)二进制文件被签入,然后被删除,因为它们仍然会出现在存储库中并占用空间,即使它们不是最新的。

如果你的 git repo 中存储了大型的二进制文件,你可以考虑:

正如我在“ Git 中的文件限制是什么(数量和大小) ?”中提到的,GitHub 的 Git LFS是管理那些大文件的一种方法(通过将它们存储在 Git 存储库中的 在外面中)。

跑步:

git remote prune origin

删除在 origin中已经删除但在 remotes/origin中仍然可以在本地使用的所有陈旧的跟踪分支。

git gc --auto

G垃圾 C收集”-运行管理任务(压缩修订,删除松散/不可访问的对象)。--auto标志首先确定是否需要任何工作,如果不需要,则退出而不执行任何操作。

git clean -d -f -i是最好的方法。

这将有助于以更可控的方式进行清洁。

-i代表交互式。

不知道它是否会缩小它,但是在我运行 git clean之后,我经常也运行 git repack -ad,这样可以减少包文件的数量。

是的,是的,git gc是解决方案,很自然,

并且在本地——你可以删除本地存储库,然后重新克隆它,

但这里有更重要的东西。

你等待那个巨大的 git & 外部程序处理的时间被收集成长长的分钟,被收集成效率低下的时间,

从头创建一个新的 (完全地,不仅仅是一个分支)存储库 ,包括文件的唯一最新版本 很自然,您将失去所有的历史记录,

但是在代码世界里,现在不是感情用事的时候,没有必要拖延整整5年的代码的每一次提交或差异, 如果你怀旧的话,你仍然可以把旧的 Git & Outals 存放在某个地方: ]

但是,在某些时候,你真的必须继续前进: ]

你的团队会感谢你的!

运行这个命令非常危险,但是会通过擦除所有 git 恢复/备份文件来缩小存储库:

git reflog expire --expire=now --all && git gc --prune=now --aggressive

它将擦除 git 用于从某些错误命令恢复存储库的所有文件,例如,如果您使用 git reset --hard,通常可以恢复丢失的文件。但是如果在 git reflog expire...命令之前执行 git reset --hard,那么您将失去一切。现在,您唯一的希望就是使用一些工具来分析您的文件系统,并尝试恢复被擦除的文件,如果它们没有被覆盖的话。