git

Git仓库瘦身

Git仓库瘦身

920 发布: 2023/8/16 12:10 本文总阅读量

查询大文件

git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10 | awk '{print$1}')"

rev-list:命令用来列出Git仓库中的提交,我们用它来列出所有提交中涉及的文件名及其ID.该命令可以指定只显示某个引用(或分支)的上下游的提交.
–objects:列出该提交涉及的所有文件ID.
–all:所有分支的提交,相当于指定了位于/refs下的所有引用.
verify-pack:命令用于显示已打包的内容。

删除大文件

注意:删除前一定要仔细缺人文件是否在使用;备份!备份!备份!

git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch big1 big2' --prune-empty --tag-name-filter cat -- --all

big1、big2是大文件名称,多个文件用空格隔开.
filter-branch:命令可以用来重写Git仓库中的提交.
–index-filter:参数用来指定一条Bash命令,然后Git会检出(checkout)所有的提交,执行该命令,然后重新提交.
–all:参数表示我们需要重写所有分支(或引用).

强制提交

git push origin branch-name --force

清理回收空间

rm -rf .git/refs/original/

git reflog expire --expire=now --all

git gc --prune=now

参考

资料