概述
如果我們在使用的過程中不小心將較大的二進制文件加入到倉庫中,那么隨著我們提交次數(shù)的增多倉庫的體積將會不斷的膨脹,例如我在項目中每次都會編譯出一些so庫文件,但是我并沒有忽略這些文件,每次都會提交,隨著時間的推移倉庫體積不斷膨脹,將不能再推送到遠程倉庫中
我使用的是gitee遠程倉庫,由于倉庫體積的不斷膨脹,超出了最大限制,推送失敗
1. 安裝git-filter-repo
官方庫地址和安裝說明
- 手動安裝
我們把git-filter-repo克隆島=到本地,然后把git-filter-repo文件復制到/usr/local/bin 目錄下即可,git-filter-repo實際上就是一個python文件git-filter-repo.py - 通過pip安裝
pip install git-filter-repo
2.列出倉庫中的大文件
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}')"
3.強制徹底刪除歷史大文件
注意: 刪除之前一定要先備份倉庫
badfile是文件路徑,比如 output/lib/a1.so
git filter-repo --path badfile --invert-paths --force
也可以批量刪除
git filter-repo --path output/lib/*.so --invert-paths --force
批量刪除某個文件的所有提交歷史
git filter-repo --path output/lib/liba.so* --invert-paths --force
刪除目錄 output/lib/service
git filter-repo --path output/lib/service --invert-paths --force
刪除完后filter-repo會自動執(zhí)行g(shù)it gc功能,不需要我們手動執(zhí)行
4.強制推送到遠端
git push -f origin master
5.額外說明
刪除之后最好把一些二進制文件添加到.gitignore中不再提交,不然倉庫還會不斷增大
推送的過程中由于庫太大推送到遠端失敗處理方式
HTTP 413 curl 22 The requested URL returned error: 413
可以嘗試設(shè)置http buffer來解決
git config http.postBuffer 524288000
解決不了的話需要改成ssh的方式推送
查看當前的遠端倉庫地址設(shè)置
git remote -v
可以看到當前使用的是http地址,設(shè)置成ssh地址
git remote set-url origin ssh地址
ssh地址可以在gitee上查看文章來源:http://www.zghlxwxcb.cn/news/detail-565336.html
6.參考文章
倉庫體積過大,如何減小(filter-branch方式)
倉庫體積過大,如何減???
用 git filter-repo 徹底刪除Git中的大文件
git-filter-repo倉庫地址文章來源地址http://www.zghlxwxcb.cn/news/detail-565336.html
到了這里,關(guān)于git倉庫體積過大,如何減小?git倉庫體積壓縮,使用git-filter-repo刪除歷史大文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!