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

mkh04yzy  于 12个月前  发布在  Git
关注(0)|答案(7)|浏览(187)

每次使用Git commit/push,我的项目都变得越来越大。有没有办法清理我的Git文件夹?

nfs0ujit

nfs0ujit1#

我不知道你想要什么。首先,当然每次你提交/推送的时候目录都会变大一点,因为它必须存储每一个额外的提交。
但是,您可能需要git gc,它将“清理不必要的文件并优化本地存储库”(manual page)。
另一个可能相关的命令是git clean,它将从树中删除未跟踪的文件(manual page)。

i7uq4tfw

i7uq4tfw2#

运行:

git remote prune origin

字符串
它会删除所有已经在origin上删除但在remotes/origin中仍然可用的过时跟踪分支。

git gc --auto


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

q3qa4bjr

q3qa4bjr3#

有一种情况下,你的git仓库会随着每次提交而变得越来越大,那就是你提交的是你定期生成的二进制文件,它们的存储效率不会像文本文件那么高。
另一种情况是在 * 一个 * repo(这是git的限制)而不是几个子repo(作为子模块管理)中有大量文件。
在这篇关于git space的文章中,AlBlue提到:
请注意,Git(和Hg,以及其他DVCS)确实存在一个问题,即(大型)二进制文件被检入,然后被删除,因为它们仍然会显示在存储库中并占用空间,即使它们不是最新的。
如果你的git repo中存储了大量的二进制文件,你可以考虑:

  • 在外部存储库中管理这些二进制文件。
  • 管理你的.git repo大小
  • 尝试用git filter-branch从你的历史中删除这些二进制文件(警告:这将重写历史,如果你已经推了你的repo,如果其他人已经从它拉了出来,这是不好的)

正如我在“What are the file limits in Git (number and size)?“中提到的,最近(2015年,这个答案之后的5年)来自GitHub的Git LFS是一种管理这些大文件的方法(通过将它们存储在Git存储库之外)。

kzipqqlq

kzipqqlq4#

是的,是的,git gc是解决方案,自然。
在本地,您可以删除本地存储库并再次克隆它
但还有更重要的事...
你等待处理巨大的Git和外部数据的时间被收集到很长的几分钟,其中被收集到几个小时的低效时间。

从头开始创建一个新的 (完全的,而不仅仅是一个分支) 存储库,包括唯一的最近版本的文件,* 自然 * 你会丢失所有的历史。

但是在代码世界里,现在不是多愁善感的时候。没有任何意义为了每次提交或差异而拖沿着整整5年的代码。如果你怀旧的话,你仍然可以把旧的Git和外部代码存储在某个地方:]
但是,在某些时候你真的必须沿着:]
你的团队会感谢你的!

khbbv19g

khbbv19g5#

运行此命令非常危险,但它会通过删除所有Git恢复/备份文件来缩小仓库:

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

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

piok6c0g

piok6c0g6#

git clean -d -f -i是最好的方法。
这将有助于以更可控的方式进行清洁。
-i是interactive的意思。

carvr3hs

carvr3hs7#

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

相关问题