本文原博客:http://www.hackeris.me/?p=59git
————————————————————————————————————————————————segmentfault
讀《Git權威指南》——筆記spa
git log -1 --pretty=raw
能夠看到有三個哈希值所表示的對象,分別是此次提交的標識、目錄樹、本次提交的父提交code
咱們能夠用命令對象
git cat-file -t 9c0ac
來查看該哈希值所表示的是什麼對象。(其中哈希值不用所有輸入,只需輸入前面一小段不衝突的字符)圖片
用get
git cat-file -p 9c0ac
查看該對象的內容博客
當查看tree的對象的時候,發現裏面還包含這另一個對象blob,這個對象保存着a.txt的內容。咱們查看一下it
git log --pretty=raw --graph 9c0ac
能夠查看該對象的父提交的跟蹤鏈,到了最後一個的時候便沒有parent對象。ast
git branch
查看分支
可見,當前有兩個分支。一個是master,和pre分支
git log HEAD -1
查看當前遊標的指向。(HEAD稱爲遊標,用於指向不一樣分支中的不一樣提交。下面會詳細說明)
git log master -1
查看當前master的提交標識
git log pre -1
查看當前pre的提交標識
若加上參數 --pretty=oneline 則顯示精簡模式
可見,當前的HEAD遊標和master的指向是同樣的,因此當前的HEAD是指向master的最後一個提交
如今咱們切換一下分支
查看當前master的提交標識
git checkout pre
可見,切換分支以後,遊標HEAD就指向pre的最新的提交了。
下面咱們來看看這些對象都存放了在哪裏
find .git -name HEAD -o -name master -o -name pre
再把他們輸出查看
cat .git/HEAD
cat .git/refs/heads/master
cat .git/refs/heads/pre
可見,HEAD是指向了refs/heads/master(而不是一個具體的哈希值)。與上面一一對應。徹底相同。
還介紹多一個底層命令,用語查看引用對應的提交ID(哈希值):
git rev-parse HEAD
————————————————————————————————————————————————