?
This document uses PHP Chinese website manual Release
git-repack - 在存儲庫中打包解包的對象
git repack [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [--window=<n>] [--depth=<n>] [--threads=<n>]
該命令用于將當(dāng)前未駐留在“pack”中的所有對象組合到一個包中。它也可以用來重新組織現(xiàn)有的包裝成單一,更高效的包裝。
一個包是對象的集合,單獨(dú)壓縮,應(yīng)用增量壓縮,存儲在單個文件中,并具有關(guān)聯(lián)的索引文件。
軟件包用于減少鏡像系統(tǒng),備份引擎,磁盤存儲等的負(fù)載。
-a
而不是逐步打包解包的對象,將所有引用的東西打包到一個包中。打包用于私人開發(fā)的存儲庫時特別有用。使用-d
。這將清理git prune
留下的物體,但git fsck --full --dangling
顯示為懸掛。
請注意,通過啞協(xié)議獲取的用戶必須獲取整個新包才能獲取任何包含的對象,而不管該包中已有多少個其他對象。
-A
和-a
一樣,除非-d
被使用。然后,前一包中的任何無法訪問的對象變成松散的,未包裝的對象,而不是留在舊包中。無法到達(dá)的物體從未故意添加到包中,即使在重新包裝時也是如此。此選項可防止無法訪問的對象被保留在舊包中而被刪除。相反,松散的不可訪問的對象將在下一次git gc
調(diào)用時根據(jù)正常的過期規(guī)則進(jìn)行修剪。參見git-gc [1]。
-d
打包之后,如果新創(chuàng)建的包使某些現(xiàn)有包冗余,請移除冗余包。還可以運(yùn)行git prune-packed
以刪除多余的松散對象文件。
-l
將--local
選項傳遞給git pack-objects
。參見git-pack-objects。
-f
將--no-reuse-delta
選項傳遞給git-pack-objects
git-pack-objects。
-F
將--no-reuse-object
選項傳遞給git-pack-objects
git-pack-objects。
-q
將-q
選項傳遞給git pack-objects
。參見git-pack-objects。
-n
不要使用更新服務(wù)器信息git update-server-info
。此選項將跳過通過HTTP或FTP更新發(fā)布此存儲庫(或其直接副本)所需的本地目錄文件。參見git-update-server-info。
--window=<n> --depth=<n>
這兩個選項會影響包中包含的對象如何使用增量壓縮進(jìn)行存儲。對象首先在內(nèi)部按類型,大小和可選名稱進(jìn)行排序,并與其他對象進(jìn)行比較,--window
以查看使用增量壓縮是否節(jié)省空間。--depth
限制最大增量深度; 使得它太深,會影響解包方的性能,因?yàn)樾枰啻螒?yīng)用增量數(shù)據(jù)才能獲得必要的對象。--window的默認(rèn)值是10,--depth是50。
--threads=<n>
該選項通過傳遞給git pack-objects
。
--window-memory=<n>
此選項提供額外的限制--window
; 窗口大小將動態(tài)縮小,以便不占用<n>
內(nèi)存中的多個字節(jié)。在大型和小型對象混合使用的存儲庫中,這對于不會用大型窗口內(nèi)存不足的情況很有用,但仍可以利用大型窗口來查看較小的對象。大小可以加上“k”,“m”或“g”后綴。--window-memory=0
使內(nèi)存使用無限。默認(rèn)值取自pack.windowMemory
配置變量。請注意,實(shí)際內(nèi)存使用量將是限制乘以git-pack-objects使用的線程數(shù)量。
--max-pack-size=<n>
每個輸出包文件的最大大小。大小可以加上“k”,“m”或“g”后綴。允許的最小尺寸限制為1 MiB。如果指定,則可能會創(chuàng)建多個包文件,這也會阻止創(chuàng)建位圖索引。默認(rèn)值是無限的,除非配置變量pack.packSizeLimit
被設(shè)置。
-b --write-bitmap-index
編寫一個可達(dá)性位圖索引作為重新包裝的一部分。這只適用于-a
or 時才有意義-A
,因?yàn)槲粓D必須能夠引用所有可到達(dá)的對象。此選項覆蓋設(shè)置repack.writeBitmaps
。如果創(chuàng)建多個包文件,此選項不起作用。
--pack-kept-objects
.keep
重新包裝時在文件中包含對象。請注意,我們?nèi)匀徊粫?code>.keep在pack-objects
完成后刪除包。這意味著我們可能會復(fù)制對象,但是這可以在并發(fā)推送或提取時使用此選項。此選項通常僅在使用-b
or 編寫位圖時才有用repack.writeBitmaps
,因?yàn)樗纱_保位圖packfile具有必需的對象。
--unpack-unreachable=<when>
松開不可觸及的對象時,不要打擾任何比以前更老的物體<when>
。這可以用來優(yōu)化任何可以立即被后續(xù)修剪的對象的寫入git prune
。
-k --keep-unreachable
當(dāng)與它一起使用時-ad
,現(xiàn)有包中的任何不可達(dá)對象都將被添加到包文件的末尾,而不是被刪除。另外,任何不可及的松散物體都將被包裝(并且它們的松散對象被移除)。
默認(rèn)情況下,該命令將--delta-base-offset
選項傳遞給git pack-objects
; 這通常會導(dǎo)致更小的包,但生成的包與Git版本比1.4.4版本不兼容。如果您需要直接或通過啞HTTP協(xié)議來共享您的存儲庫中的古老Git版本,那么您需要將配置變量設(shè)置repack.UseDeltaBaseOffset
為“false”并重新打包。通過本地協(xié)議從舊Git版本訪問不受此選項的影響,因?yàn)樵诖饲闆r下根據(jù)需要即時執(zhí)行轉(zhuǎn)換。
git-pack-objects[1] git-prune-packed[1]