DevilKing's blog

冷灯看剑,剑上几分功名?炉香无需计苍生,纵一穿烟逝,万丈云埋,孤阳还照古陵

0%

Git 内部原理

原文链接

.git目录下

1
2
3
4
5
6
7
8
9
10
$ ls
HEAD
branches/
config
description
hooks/
index
info/
objects/
refs/

新版本Git不再使用branches目录

有四個重要的檔案或目錄:HEADindex 檔,objectsrefs 目錄。這些是 Git 的核心部分。objects 目錄存放所有資料內容,refs 目錄存放指向資料 (分支) 的提交物件的指標,HEAD 檔指向目前分支,index 檔保存了暫存區域資訊

通過 cat-file 命令可以將資料內容取回。該命令是查看 Git 對象的瑞士軍刀。傳入 -p 參數可以讓 cat-file 命令輸出資料內容的類型:

1
2
$ git cat-file -p d670460b4b4aece5915caf5c68d12f560a9fe3e4
test content

Git 以一種類似 UNIX 檔案系統但更簡單的方式來保存內容。所有內容以 tree 或 blob 物件保存,其中 tree 物件對應於 UNIX 中的目錄,blob 物件則大致對應於 inodes 或檔案內容。一個單獨的 tree 物件包含一條或多條 tree 記錄,每一條記錄含有一個指向 blob 或子 tree 物件的 SHA-1 指標,並附有該物件的許可權模式 (mode)、類型和檔案名資訊。

git树