Git删除大文件历史记录
Git删除大文件历史记录
-
git clone 仓库地址
-
查看大文件并排序
git rev-list --objects --all |grep $(git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -1|awk '{print $1}')
-
删除大文件
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch path_to_your_big_file' --prune-empty --tag-name-filter cat -- --all
–ignore-unmatch后面写你第2步看到的大文件的路径
注意:若有多个分支,可能要切换后再删除;
注意:使用步骤2)进行验证,是否真的删除了,删除后,将不返回任何信息。
-
清理历史记录
rm -rf refs/original/git reflog expire --expire=now --allgit gc --prune=nowgit gc --aggressive --prune=now
-
强行推到远端
注意这里是关键,网上所有的教程都是用的
git push --force --all
之类的命令,这种命令是错误的,–all无法推送所有的引用而–mirror可以
要使用如下命令:
git push --force --mirror
大功告成!