【git】commit历史记录中有大文件,导致无法push解决方法

报错信息为历史记录中有大于100MB的文件,无法完成push

方案:

根据报错信息中的文件名代码进行查找,如90c5365492dea3b3c855b2375f1de8588ac1bda4
使用命令

git rev-list --objects --all | grep 90c5365492dea3b3c855b2375f1de8588ac1bda4

查找到文件名称后,根据该文件名将其从历史记录中删除

90c5365492dea3b3c855b2375f1de8588ac1bda4 datasets/cifar-10-python.tar.gz

原来是一个数据集的压缩包的体积过大,导致无法push,使用如下命令将其移除

git log --pretty=oneline --branches -- datasets/cifar-10-python.tar.gz

再对所有commit进行重写,让该文件从历史中消失

git filter-branch --index-filter 'git rm --cached --ignore-unmatch datasets/cifar-10-python.tar.gz' -- --all

该命令进行重写时可能会报错,使用命令git stash进行解决

最后还需要从日志中将改文件的引用全部删除

rm -rf .git/refs/original
rm -rf .git/logs/
git gc
git prune

最后就可以成功push了,此处需要使用强制push,命令如下:

git push --force

你可能感兴趣的:(日常记录,git,github)