本文首發於公衆號「AntDream」,歡迎微信搜索「AntDream」或掃描文章底部二維碼關注,和我一塊兒天天進步一點點git
首先咱們先來向Git倉庫中存儲數據bash
//終端輸入,其中 -w 參數就表示向Git倉庫中寫入 echo 'test content' | git hash-object -w --stdin //輸出 d670460b4b4aece5915caf5c68d12f560a9fe3e4 複製代碼
上面命令的功能是向Git倉庫中存入 test content
,咱們會看到輸出了一串40位長度的內容,並且能夠在 objects
目錄下看到一個文件。微信
這就是開始時 Git 存儲內容的方式——一個文件對應一條內容,以該內容加上特定頭部信息一塊兒的 SHA-1 校驗和爲文件命名。 校驗和的前兩個字符用於命名子目錄,餘下的 38 個字符則用做文件名。markdown
而後咱們看看這個文件的內容:post
咱們會發現這個文件裏面並非test content
,那這個文件內容怎麼就變了呢?spa
test content
就變成上面圖中的內容了//把內容取出來 git cat-file -p 70460b4b4aece5915caf5c68d12f560a9fe3e4 //輸出 test content 複製代碼
上面咱們演示的是直接同Git倉庫操做數據,包括存數據取數據,而咱們實際開發中,通常都是操做文件,對文件進行版本控制版本控制
下面咱們來看看Git倉庫是怎麼對文件進行版本控制的code
//咱們先建立一個文件 test.txt ,內容爲 version 1 echo 'version 1' > test.txt 複製代碼
上述命令咱們就建立了一個內容爲 version 1 , 文件名爲 test.txt 的文件,這個時候若是咱們用 git status
命令能夠查看當前工程全部狀態(開頭說的3種狀態)的文件信息,以及操做提示,這個是一個頗有用的命令orm
直接用上面寫入內容的方法向Git倉庫中寫入數據,也就是對象
//直接向Git中寫入數據 git hash-object -w test.txt //輸出 83baae61804e65cc73a7201a7252750c76066a30 複製代碼
咱們能夠把內容取出來看看:
//取出剛剛存的內容
git cat-file -p 83baae61804e65cc73a7201a7252750c76066a30
//輸出
version 1
複製代碼
這就是存儲文件的過程
上述方式有什麼問題?
怎麼解決這些問題呢?這就須要Git中的第二個對象—— 樹對象。下一次咱們就來看看樹對象
歡迎關注個人公衆號查看更多精彩文章!
複製代碼