10.4 Git 內部原理 - 《包文件》

Git 使用 zlib 壓縮文件的內容豪直。
Git 最初向磁盤中存儲對象時所使用的格式被稱為“松散(loose)”對象格式。 但是嗓蘑,Git 會時不時地將多個這些對象打包成一個稱為“包文件(packfile)”的二進制文件豌汇,以節(jié)省空間和提高效率。 當版本庫中有太多的松散對象柜思,或者你手動執(zhí)行 git gc 命令,或者你向遠程服務器執(zhí)行推送時陨享,Git 都會這樣做抛姑。 要看到打包過程定硝,你可以手動執(zhí)行 git gc 命令讓 Git 對對象進行打包:

$ git gc
Counting objects: 18, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (14/14), done.
Writing objects: 100% (18/18), done.
Total 18 (delta 3), reused 0 (delta 0)

這個時候再查看 objects 目錄镀虐,你會發(fā)現(xiàn)大部分的對象都不見了空猜,與此同時出現(xiàn)了一對新文件:

$ find .git/objects -type f
.git/objects/bd/9dbf5aae1a3862dd1526723246b20206e5fc37
.git/objects/d6/70460b4b4aece5915caf5c68d12f560a9fe3e4
.git/objects/info/packs
.git/objects/pack/pack-    978e03944f5c581011e6998cd0e9e30000905586.idx
.git/objects/pack/pack-978e03944f5c581011e6998cd0e9e30000905586.pack

仍保留著的幾個對象是未被任何提交記錄引用的數據對象。因為你從沒將它們添加至任何提交記錄中谆沃,所以 Git 認為它們是懸空(dangling)的,不會將它們打包進新生成的包文件中。
Git 打包對象時卓舵,會查找命名及大小相近的文件,并只保存文件不同版本之間的差異內容融击。 你可以查看包文件,觀察它是如何節(jié)省空間的封救。 git verify-pack 這個底層命令可以讓你查看已打包的內容
第二個版本完整保存了文件內容鹅士,而原始的版本反而是以差異方式保存的——這是因為大部分情況下需要快速訪問文件的最新版本以舒。
最妙之處是你可以隨時重新打包扼脐。 Git 時常會自動對倉庫進行重新打包以節(jié)省空間。當然你也可以隨時手動執(zhí)行 git gc 命令來這么做奋刽。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末瓦侮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子佣谐,更是在濱河造成了極大的恐慌肚吏,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件狭魂,死亡現(xiàn)場離奇詭異罚攀,居然都是意外死亡党觅,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門斋泄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杯瞻,“玉大人,你說我怎么就攤上這事炫掐】颍” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵募胃,是天一觀的道長旗唁。 經常有香客問我,道長痹束,這世上最難降的妖魔是什么检疫? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮祷嘶,結果婚禮上电谣,老公的妹妹穿的比我還像新娘。我一直安慰自己抹蚀,他們只是感情好剿牺,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著环壤,像睡著了一般晒来。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上郑现,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天湃崩,我揣著相機與錄音,去河邊找鬼接箫。 笑死攒读,一個胖子當著我的面吹牛,可吹牛的內容都是我干的辛友。 我是一名探鬼主播薄扁,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼废累!你這毒婦竟也來了邓梅?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤邑滨,失蹤者是張志新(化名)和其女友劉穎日缨,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體掖看,經...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡匣距,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年面哥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片毅待。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡尚卫,死狀恐怖,靈堂內的尸體忽然破棺而出恩静,到底是詐尸還是另有隱情焕毫,我是刑警寧澤蹲坷,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布驶乾,位于F島的核電站,受9級特大地震影響循签,放射性物質發(fā)生泄漏级乐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一县匠、第九天 我趴在偏房一處隱蔽的房頂上張望风科。 院中可真熱鬧,春花似錦乞旦、人聲如沸贼穆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽故痊。三九已至,卻和暖如春玖姑,著一層夾襖步出監(jiān)牢的瞬間愕秫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工焰络, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留戴甩,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓闪彼,卻偏偏與公主長得像甜孤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子畏腕,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內容