給 Git 倉庫瘦身,刪除大文件的版本控制

Git倉庫用久後;或者.gitignore文件一開始沒有設置好,沒有忽略掉大文件(比如: zip,sql,dll… 等二進制文件),會把git倉庫體積撐的很大,可達好幾個G。這些大文件有些是沒必要放進來的, 完全可以刪除掉來精簡倉庫體積。

下面是解決方法步驟:

1. 查看存儲庫中的大文件

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 rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -15 | awk '{print$1}')"

2. 改寫歷史,去除大文件

進入項目根目錄(.git 文件夾所在的目錄)

$ cd project

從提交歷史中刪除所有的zip文件

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.zip' --prune-empty --tag-name-filter cat -- --all

從提交歷史中刪除uploads文件夾中的所有文件

git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch uploads/' --prune-empty --tag-name-filter cat -- --all

清除殘餘的 objects並通過GC回收空間

$ rm -rf .git/refs/original/ 
$ git reflog expire --expire=now --all
$ git gc --prune=now
$ git gc --aggressive --prune=now

強制推送覆蓋遠端倉庫

git push origin --tags --force
git push origin --all --force

查看瘦身後的體積

$ du .git -lsh 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章