了解Git對象
Git 的核心部分是一個簡單的鍵值對資料庫。你可以向該資料庫插入任意類型 的内容,它會傳回一個鍵值,這個值就是根據你的内容得到的hash值,通過該鍵值可以在任意時刻再次檢索該内容.
例如:
1
echo "jane1" | git hash-object -w --stdin
這裡的echo “jane1” 就是向控制台輸出jane1,
| 的意思是執行另外的一個代碼
git 是代表這個是git代碼
hash-object 就是存儲資料對象
-w 就是就是向Git倉庫儲存這個内容,檔案名是用hash的前兩個字母來建立一個檔案夾,後面的hash值的字母用來做檔案名,檔案的内容就是要儲存的内容,若沒有寫這個就隻是傳回hash值,不會向倉庫裡面寫内容的
–stdin 訓示該指令從标準輸入讀取内容; 若不指定此選項,則須在指令尾部給出待存儲檔案的路徑:
git hash-object -w 檔案路徑
2.
find ./.git/objects -type f
這個指令就是看檔案,就是到.git/objects 這個目錄下面看看還有什麼檔案,有的話就在控制台裡面顯示出來
3.
git cat-file -p 寫上對應的hash值
-p 選項可訓示該指令自動判斷内容的類型,并為我們顯示格式友好的内容
前面我們說過
cat 檔案的url
這樣子也可以看檔案的内容,但是這裡的内容是被壓縮過的,是以這樣看就會出現亂碼
将這裡的-p改成-t就是看這個檔案是什麼對象,這裡看的git存儲的鍵值對是bold類型

如果我們對jane.txt檔案進行修改,git倉庫是完全不知道的,需要通過git hash-object -w 修改後的檔案位址 這個指令将新修改的檔案加進git倉庫去,然後在倉庫會新生成一個git鍵值對對象,這個新的對象完全儲存了前面一個版本的内容,是以git儲存的是完整的快照,而不是增量,例如下面的操作:
總結:Git對象就是用來存儲内容的,它并不能代表一個項目的版本,Git的每一個版本隻是檔案的每一個版本,而且Git對象就遇到幾個問題: