查看存储库中的大文件(linux)

git rev-list --objects --all | grep -E `git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}' | sed ':a;N;$!ba;s/\n/|/g'`

改写历史,去除大文件

注意:下方命令中的 path/to/large/files 是大文件所在的路径,千万不要弄错!
git filter-branch --tree-filter 'rm -f path/to/large/files' --tag-name-filter cat -- --all
git push origin --tags --force
git push origin --all --force

永久删除误传的文件夹及所有下属文件

# 删除文件夹3.database/csv
git filter-branch --force --index-filter 'git rm --cached -r --ignore-unmatch 3.database/csv' --prune-empty --tag-name-filter cat -- --all
# 以强制覆盖的方式推送你的repo
git push origin master --force --all
# 清理和回收空间
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now

永久删除误传的文件

# 删除文件夹3.database/csv/csv导出记录.xlsx
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 3.database/csv/csv导出记录.xlsx' --prune-empty --tag-name-filter cat -- --all
# 以强制覆盖的方式推送你的repo
git push origin master --force --all
# 清理和回收空间
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now