Git中的物件結構(二)

  • 167
  • 0
  • Git
  • 2018-01-23

接續上篇....這邊示範commit物件及tag物件

commit物件

$ git cat-file -t 5d6f33d 得到結果為commit物件(附帶一提SHA-1只要有4碼以上就可以用了喔, 例如$ git cat-file -t 5d6f結果也是會一樣)

觀察裡面到底帶了什麼資訊$ git cat-file -p 5d6f33d,

分別帶了

  • tree: 後面一串SHA-1, 是不是跟上一篇得有點雷同?? 對~它就是上一篇尾端提到的tree物件
  • author: 作者
  • commiter: commit的人, 一般情況下通常會是跟作者同一人
  • 最後一行的message: commit時候打的訊息

可以觀察到這些是上一篇一開始說的 "用來記錄某個版本(commit)下有哪些tree物件, 作者資訊, commit訊息....等"

.....後面那句呢? 除了第一次的版本外, 其他都還會包含上一層的commit物件名稱

接下來, 我再將這層目錄下的 index.html 改成 INDEX.html 並且commit, 看倒數第二個SHA-1值是8963b2f就好, 其他是後來的commit紀錄。

觀察一下 $ git cat-file -p 8963b2, 多了一個parent, 它後面的值是5d6f33xxxxx.....這不正是上面提到的commit物件嗎, 所以這樣就串起來了,

8963b2 這顆 commit 的parent(也就是上一個commit)是5d6f33​

 

tag物件

關於tag指令有分輕量標籤(lightweight tag),及有附註標籤(annotated tag), 詳細說明請見 使用標籤

$ git tag testTag 2da4a7f -a -m "HELLLO"

.git/objects的目錄下會產生一個e2開頭的資料夾

一樣下指令查看此串SHA-1, object指向2da4a7xxxxx......., 與我們最新的那筆commit的SHA-1相同

 

以上, 物件結構解析到此。