删除git历史记录中的大文件
大文件难以上传到远程仓库,也会影响项目的同步——参考博客
1. 找到历史记录中的大文件
# 查看 pack 文件包的相关详细信息,通过文件大小进行排序,这里只列出5个最大的文件 git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5 # 列出某条记录对应的文件名等详细信息 git rev-list --objects --all | grep 777e8697e5dc1017ca901c8cf226d707b6e96b06 # 查看 pack 文件包中最大的文件的文件名
git rev-list --objects --all |grep $(git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -1|awk '{print $1}')
2. 修改提交历史
1)修改所有历史记录中的文件
git filter-branch --index-filter 'git rm --cached --ignore-unmatch path/to/file' -- --all
2)删除该文件的所有引用
rm -Rf .git/refs/original rm -Rf .git/logs/ git gc git prune
3. 更新远程库
git push --force
注意把涉及重写后的分支全部强制推送到远程共享库,并提醒项目中其他人重新clone 代码仓库,否则其他人提交就前功尽弃了
浙公网安备 33010602011771号