1、首先需要关闭远程仓库的分支保护,允许强制推送:
“Settings” -> “Repository” -> scroll down to “Protected branches”.
2、克隆项目,拉取所有分支:
1
2
3
4
5
|
git clone xxx # 默认拉取master分支
cd xx #进入拉取的文件夹
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all
|
3、查找大文件(将最大的10个文件查询下来)
1
|
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}')"
|
4、清理查找的大文件(一次只能处理一个文件/文件夹):
1
|
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch 目录/文件' --prune-empty --tag-name-filter cat -- --all
|
5、删除并回收空间
1
2
3
4
5
|
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
|
6、推送远程仓库:
1
2
|
git push origin --force --all
git remote prune origin
|
然后其他人重新克隆项目即可
参考链接:https://www.msnao.com/2021/06/15/5031.html