似乎我的项目越来越大,与每个 git commit/push。有办法清理我的 Git 文件夹吗?
commit/push
我不知道你想要什么。首先,当然每次提交/压入目录时,目录都会变得稍微大一点,因为它必须存储这些额外的提交。
但是,您可能需要 git gc,它将“清理不必要的文件并优化本地存储库”(手册)。
git gc
另一个可能相关的命令是 git clean,它将 删除从您的树(手册)取消跟踪文件。
git clean
一个场景是,你的 git 回购将得到 说真的与每次提交是一个你提交的二进制文件,你定期生成。它们的存储效率不如文本文件.
另一种是你在 一回购(这是一个 免疫球蛋白的极限)内有大量的文件,而不是几个子回购(作为子模块管理)。
在 关于 Git 空间的文章中,AlBlue 提到:
请注意,Git (以及 Hg 和其他 DVCS)确实存在这样一个问题: (大型)二进制文件被签入,然后被删除,因为它们仍然会出现在存储库中并占用空间,即使它们不是最新的。
如果你的 git repo 中存储了大型的二进制文件,你可以考虑:
git filter-branch
正如我在“ Git 中的文件限制是什么(数量和大小) ?”中提到的,GitHub 的 Git LFS是管理那些大文件的一种方法(通过将它们存储在 Git 存储库中的 在外面中)。
跑步:
git remote prune origin
删除在 origin中已经删除但在 remotes/origin中仍然可以在本地使用的所有陈旧的跟踪分支。
origin
remotes/origin
git gc --auto
“ G垃圾 C收集”-运行管理任务(压缩修订,删除松散/不可访问的对象)。--auto标志首先确定是否需要任何工作,如果不需要,则退出而不执行任何操作。
--auto
git clean -d -f -i是最好的方法。
git clean -d -f -i
这将有助于以更可控的方式进行清洁。
-i代表交互式。
-i
不知道它是否会缩小它,但是在我运行 git clean之后,我经常也运行 git repack -ad,这样可以减少包文件的数量。
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,那么您将失去一切。现在,您唯一的希望就是使用一些工具来分析您的文件系统,并尝试恢复被擦除的文件,如果它们没有被覆盖的话。
git reset --hard
git reflog expire...