问题说明

  1. github 或gitee 支持的提交文件大小有一定的限制。
  2. git中历史提交的一些比较大的文件 即使删除了,因为提交记录存在,所以文件还会存储在.git 文件夹中,造成git目录文件比较大。

通过将大文件或记录删除可以解决

  1. 本地提交的大文件无法推送的问题。
  2. 对git文件目录瘦身。

解决方式

  1. 查找历史比较大的提交记录。
1
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"

得到需要的文件目录名。

  1. 通过 filter-branch 来重写这些大文件涉及到的所有提交(重写历史记录):
1
git filter-branch -f --prune-empty --index-filter 'git rm -rf --cached --ignore-unmatch ${FILE_PATH_NAME}' --tag-name-filter cat -- --all

替换 ${FILE_PATH_NAME} 为真实的文件路径。

注意: 文件名后面有个单引号

参考链接:

  1. https://harttle.land/2016/03/22/purge-large-files-in-gitrepo.html