git 仓库瘦身

Last updated on September 15, 2024 pm

🧙 Questions

此操作有风险,提前备份好代码
项目无意中提交了比较大的文件,导致项目拉取比较大,需要在所有的提交历史中删除此文件

☄️ Ideas

查询大文件
# 查询曾经上传过的比较大的文件
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'`
删除并压缩历史记录
git filter-branch -f --index-filter "git rm -rf --ignore-unmatch public/logo512.png" --prune-empty --tag-name-filter cat -- --all
git for-each-ref --format="delete %(refname)" refs/original | git update-ref --stdin
git reflog expire --expire=now --all && git gc --prune=now
强行推到服务器

Note: 推完之后最好重新拉取 或者使用git rebase

git push origin --force --all
git remote prune origin

git 仓库瘦身
https://ispong.isxcode.com/github/git/git 仓库瘦身/
Author
ispong
Posted on
March 21, 2022
Licensed under