有写老的git仓库,因为当年的无知,不会用.gitignore
,残留下了像debug
、obj
等目录的文件,非常占空间,然后就需要对历史里的各种垃圾进行清理了
这里要确定某种文件或某个路径,是你要永久清理掉的
如果是目录,执行:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch obj/*' --prune-empty --tag-name-filter cat -- --all
如果是某个拓展名的文件,比如lod
:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.lod' --prune-empty --tag-name-filter cat -- --all
然后依次执行下面的东西,清理空间就好了:
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
最后强制覆盖云端推送上去,命令行推送带上--force --all
参数就可以了,TortoiseGit
参考下面:
git仓库瘦身完成辣
转载保留版权:晨旭的博客 » 《永久清理git中的历史大文件》如果喜欢可以: 点击右侧上方的邮件订阅,订阅本站
在工作环境上用强推会被同事打死(滑稽
当年公司某在github的仓库有半个多g,然后我就去清理成30M了,第二天就有个同事说推不上去(
备注:记得同时删tag