Git HEAD
很多Git使用者對HEAD有所瞭解,但僅限於它指向當前所在的分支。
本文將較為詳細深入的介紹一下HEAD到底是什麼。
首先看一下當前分支的提交記錄,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git log --oneline
程式碼執行效果截圖如下:
由上圖可以看到HEAD指向master分支,master分支指向sha-1值為93dd8e(縮寫)的commit提交。
下面看一個更為形象的圖示:
一.HEAD是什麼:
HEAD是一個指標,通常情況下它可以將它與當前分支等同(其實它是指向當前分支)。
.git目錄中有一個為HEAD的檔案,它記錄著HEAD的內容,檢視其中內容程式碼如下:
[Shell] 純文字檢視 複製程式碼$ cat .git/HEAD
程式碼執行效果截圖如下:
可以看到HEAD指向master分支,下面再來看一下refs/heads/master中的內容:
[Shell] 純文字檢視 複製程式碼$ cat .git/refs/heads/master
程式碼執行效果截圖如下:
master分支也只是一個存放40位sha-1值的檔案而已,正是當前分支所指向commit的sha-1值。
二.切換分支:
當前位於master,現在切換到Develop分支,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ git checkout Develop
程式碼執行效果截圖如下:
可以看到現在已經切換到分支Develop。
現在再來檢視HEAD檔案的內容,程式碼如下:
[Shell] 純文字檢視 複製程式碼$ cat .git/HEAD
程式碼執行效果截圖如下:
現在已經指向Develop分支。
下面再來看一下refs/heads/Develop中的內容:
[Shell] 純文字檢視 複製程式碼$ cat .git/refs/heads/Develop
程式碼執行效果截圖如下:
也就是說HEAD通常會指向當前所在分支。
三.detached HEAD:
當HEAD沒有指向某個分支,而是指向一個commit,則會形成detached HEAD。
此概念會在單獨一章節介紹,具體參閱Git detached HEAD介紹一章節。
四.HEAD縮寫形式:
Git 1.8.5版本之後,HEAD有一個縮寫形式@,確實可以省略幾個字元。
[Shell] 純文字檢視 複製程式碼$ git reset HEAD^
上面程式碼可以縮寫為以下形式:
[Shell] 純文字檢視 複製程式碼$ git reset @^
雖然是少些了幾個字元,但是總感覺不能夠見詞達意,好像失去了一點什麼。
相關文章
- [Original] What's HEAD, FETCH_HEAD and ORIG_HEAD in GitGit
- Git HEAD詳解Git
- git reset --hard HEAD^Git
- Git ORIG_HEAD用法介紹Git
- git-----You have not concluded your merge (MERGE_HEAD exists)解決Git
- Head
- include "head_file" 和 include <head_file>
- Linux head命令Linux
- [Bash] Head and TailAI
- detached HEAD詳解
- detached HEAD 詳解
- HTML <head>標籤HTML
- Head First Python (一)Python
- Head 外掛使用
- Head First HTML and CSS (八)HTMLCSS
- elasticsearch-head 筆記Elasticsearch筆記
- Linux基礎命令---headLinux
- git rebase重定基時衝突,檔案損壞出現HEAD標誌一鍵刪除Git
- 有關Weak Head Normal FormORM
- Linux中head命令例項Linux
- elasticSearch head 查詢報錯Elasticsearch
- Linux命令4-head / tailLinuxAI
- head 標籤裡有什麼?
- <head>標籤裡有什麼?
- 安裝elasticsearch-head外掛Elasticsearch
- HTML-head頭部淺析HTML
- elasticsearch-head離線安裝Elasticsearch
- 《Head First 設計模式》:策略模式設計模式
- Elasticsearch Head外掛使用小結Elasticsearch
- How to solve the "ambiguous argument 'origin..HEAD'"...
- 「HEAD-FIRST」之觀察者模式模式
- Head first PHP & MySQL 中文版pdfPHPMySql
- 《Head First 設計模式》:模板方法模式設計模式
- 《Head First 設計模式》:單件模式設計模式
- 《Head First 設計模式》:外觀模式設計模式
- 《Head First Java》20201017讀書筆記Java筆記
- docker安裝elasticsearch與es-headDockerElasticsearch
- 《Head First 設計模式》:狀態模式設計模式