永久清理git中的历史大文件

有写老的git仓库,因为当年的无知,不会用.gitignore,残留下了像debugobj等目录的文件,非常占空间,然后就需要对历史里的各种垃圾进行清理了

第一步当然是打开git bash(linux可以无视)

这里要确定某种文件或某个路径,是你要永久清理掉的

如果是目录,执行:

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仓库瘦身完成辣

2 Comments

  1. Google Chrome 76.0.3809.25 Google Chrome 76.0.3809.25 Windows 10 x64 Edition Windows 10 x64 Edition
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.25 Safari/537.36

    在工作环境上用强推会被同事打死(滑稽

    1. Vivaldi 2.2.1388.37 Vivaldi 2.2.1388.37 Android 8.0.0 Android 8.0.0
      Mozilla/5.0 (Linux; Android 8.0.0; MIX 2 Build/OPR1.170623.027; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/71.0.3578.99 Mobile Safari/537.36 Vivaldi/2.2.1388.37

      当年公司某在github的仓库有半个多g,然后我就去清理成30M了,第二天就有个同事说推不上去(

发表评论

电子邮件地址不会被公开。 必填项已用*标注