似乎我的项目在每个git上都越来越大commit/push。有没有办法清理我的git文件夹?
似乎我的项目在每个git上都越来越大commit/push。有没有办法清理我的git文件夹?
Answers:
我不确定你想要什么。首先,当然,每次您提交/推送目录时,目录都会变得更大一点,因为该目录必须存储所有其他提交。
但是,您可能希望git gc使用它将“清理不必要的文件并优化本地存储库”(手册页)。
另一种可能是相关的命令是git clean将删除从你的树(未跟踪文件手册页)。
WARNING如通过@Kalle写入上述命令将删除EVERY >未跟踪<文件和目录在您的GIT ROOT,不只是“文件中列出的.gitignore”。Git不会跟踪的所有内容,无论是否列出该内容.gitignore都将被擦除。git clean -dfX(请注意的情况X)只会删除中具有适用规则的项目.gitignore。请注意这个警告: 切勿在git clean没有任何运行它在交互模式下,用-i而不是-f,或至少首先进行试运行- -n用,然后再次-f。
跑:
git remote prune origin
删除所有过时的跟踪分支,这些分支已在删除,origin但仍在中本地可用remotes/origin。
git gc --auto
“ G ^ arbage Ç ollection” -运行内务处理任务(压缩版本,排除松/不可访问的对象)。该--auto标志首先确定是否需要进行任何工作,如果不需要则退出而不进行任何操作。
其中一个场景,你的混帐回购协议将得到认真更大的每提交一个你在哪里犯的二进制文件,你经常产生。它们的存储效率不如文本文件高。
另一个是在一个仓库中有大量文件(这是git的限制),而不是几个子仓库(作为子模块管理)。
在git space的这篇文章中,AlBlue提到:
请注意,Git(以及Hg和其他DVCS)确实遇到了一个问题,即签入(大)二进制文件然后将其删除,因为即使它们不是最新的,它们仍会显示在存储库中并占用空间。 。
如果您的git repo中存储了很大的二进制文件,则可以考虑:
git filter-branch(警告:这将改写历史,这是不好的,如果你已经推你的回购,如果其他已经从它拉)正如我提到“ 什么是Git中的文件限制(数量和大小)? ”,最近的(2015年,这个答案后5年)的Git LFS从GitHub是管理这些大型文件(通过存储它们的方式以外的Git存储库)。
是的是的, git gc解决方案自然是
在本地-您可以删除本地存储库,然后再次克隆它,
您等待巨大的git和外部组件处理的秒数被收集到很长的时间,其中花费了数小时的无效时间,
从头开始创建一个新的(完全不是分支)的存储库,包括唯一的最新版本的文件,自然地,您将丢失所有历史记录,
但是当在代码世界中没有时间变得感伤时,每次提交或比较都没有必要拖延整个5年的代码,如果怀旧的话,您仍然可以将旧的git和externals存储在某个地方:]
但是,在某些时候,您确实必须继续前进:]
您的团队将感谢您!
运行此命令非常危险,但是会通过删除所有git恢复/备份文件来缩小存储库:
git reflog expire --expire=now --all && git gc --prune=now --aggressive
它将删除git用于从某个错误命令恢复存储库的所有文件,例如,如果这样做了git reset --hard,通常可以恢复丢失的文件。但是,如果您在执行git reset --hard该git reflog expire...命令之前执行操作,那么您将丢失所有内容。现在,您唯一的希望是使用一些工具来分析文件系统,并尝试恢复已删除的文件(如果未覆盖)。
git clean -d -f -i 是最好的方法。
这将有助于以更可控的方式进行清洁。
-i 代表互动。
git clean清理目录不是为了清理仓库。对于盲目复制/粘贴的用户,请当心;这将删除您实际上可能希望在本地存储的未跟踪文件/目录。
不知道它是否会缩小它,但是在运行之后git clean,我通常也会这样做git repack -ad,这会减少打包文件的数量。
git gc过程的一部分,因此无需单独运行