删除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 代码仓库,否则其他人提交就前功尽弃了

posted @ 2023-11-15 15:30  谷小雨  阅读(117)  评论(0)    收藏  举报