亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我的git存儲庫這么大?

為什么我的git存儲庫這么大?

Git
慕仙森 2019-08-30 11:02:16
為什么我的git存儲庫這么大?145M = .git / objects / pack /我編寫了一個腳本來添加每個提交和提交的差異大小,然后再從每個分支的尖端向后移動。我得到129MB,沒有壓縮,沒有分支機構的相同文件和分支機構之間的共同歷史記錄。Git考慮了所有這些因素,所以我期望更小的存儲庫。那么為什么.git這么大?我弄完了:git fsck --fullgit gc --prune=today --aggressivegit repack要回答有多少文件/提交,我有19個分支,每個文件大約有40個文件。287次提交,發現使用:git log --oneline --all|wc -l它不應該使用10兆字節來存儲有關此信息。
查看完整描述

3 回答

?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

我最近把錯誤的遠程存儲庫拉到了本地(git remote add ...和git remote update)。刪除不需要的遠程引用,分支和標簽后,我的存儲庫中仍然有1.4GB(?。┑睦速M空間。我只能通過克隆來擺脫它git clone file:///path/to/repository。請注意,file://克隆本地存儲庫時會產生一些差異 - 只會復制引用的對象,而不是整個目錄結構。


編輯:這是Ian的一個班輪,用于重新創建新回購中的所有分支:


d1=#original repo

d2=#new repo (must already exist)

cd $d1

for b in $(git branch | cut -c 3-)

do

    git checkout $b

    x=$(git rev-parse HEAD)

    cd $d2

    git checkout -b $b $x

    cd $d1

done


查看完整回答
反對 回復 2019-08-30
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

git gc已經做了git repack所以沒有任何意義在手動重新包裝,除非你要傳遞一些特殊的選項。


第一步是查看大多數空間(通常情況下)是否是對象數據庫。


git count-objects -v

這應該會報告存儲庫中有多少個解壓縮的對象,它們占用了多少空間,有多少包文件以及它們占用了多少空間。


理想情況下,在重新打包之后,您將沒有解壓縮的對象和一個打包文件,但是當前分支不能直接引用的某些對象仍然存在和解壓縮是完全正常的。


如果您有一個大包裝并且想知道占用空間的是什么,那么您可以列出構成包裝的對象以及它們的存儲方式。


git verify-pack -v .git/objects/pack/pack-*.idx

請注意,verify-pack它采用索引文件而不是包文件本身。這給出了包中每個對象的報告,它的真實大小和包裝大小,以及關于它是否已經“完整”的信息,如果是,那么三角鏈的起源。


要查看存儲庫中是否存在任何異常大的對象,您可以在第四列的第三列(例如| sort -k3n)上以數字方式對輸出進行排序。


通過此輸出,您將能夠使用該git show命令查看任何對象的內容,盡管無法準確查看引用該對象的存儲庫的提交歷史記錄中的位置。如果您需要這樣做,請嘗試這個問題。


查看完整回答
反對 回復 2019-08-30
  • 3 回答
  • 0 關注
  • 945 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號