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

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命令查看任何對象的內容,盡管無法準確查看引用該對象的存儲庫的提交歷史記錄中的位置。如果您需要這樣做,請嘗試這個問題。
- 3 回答
- 0 關注
- 945 瀏覽
添加回答
舉報