找到大文件
git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5
查看文件路径
git rev-list --objects --all | grep <ID>
查看前因后果,历史提交。以public/test.mp4
为例
git log --pretty=oneline --branches -- public/test.mp4
如果需要知道commit id所在的分支,使用命令
git branch -a --contains <COMMIT ID>
删除大文件
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch public/test.mp4' --prune-empty --tag-name-filter cat -- --all
- filter-branch命令可以用来重写Git仓库中的提交
- index-filter参数用来指定一条Bash命令,然后Git会检出(checkout)所有的提交, 执行该命令,然后重新提交。
- all参数表示我们需要重写所有分支(或引用)。
清理和回收空间
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
推送到远程服务器
git push origin master --force
或
git push origin --all --force
- all代表推送所有分支,本地分支也会被推送到远程
文章作者:DOTATONG
发布日期:2023-05-29
评论