git checkout 移動 HEAD 指標
在我們正式進入到分支 (branch) 章節時,我們得先了解 HEAD
的觀念,如果你先了解它,接下來講解分支時,會理解得更好。
什麼是 HEAD?
HEAD
就是你目前指向的版本狀態,而 HEAD
可以選擇它指向到
- 分支 (branch)
- commit 版本
像是下圖,便是我們用 git init
新增本地數據庫後,新增了 3 個 commit。
在預設狀態時,master
就是我們的預設分支名稱,你可想像有條分支串起好幾個 commit。而此時的 HEAD
,他是跟著 master
向前推進的。
如果我想看最初的版本?
此時 HEAD
就會派上用場了,我們必須透過他對到我們指定 commit 版。此時我們必須先知道該 commit 的 SHA-1 編號,可以用 git log
查詢。
在每個 commit 旁邊的亂數就是 SHA-1
值,可以取前幾碼來準備切換,像我想回到第一個版本,那就是下圖白框處。指令則是
git checkout 1849273<指定 commit SHA-1>
切換後,你就可以看到自己的工作目錄,彷彿用了時光機,回到以前你指定的開發歷史狀態。
而此時的 HEAD
的位置就會被指定到第一個 commit 紀錄上,如下圖。
假使我們用 sourtree 查看,你也會發現 HEAD
的變化。
想再切換到最新狀態的話呢?
你可以使用此指令:
git checkout master
也就是讓 HEAD
再綁定回 master
的分支即可,如下圖。
接下來當你又新增一個 commit 時,因為 HEAD
跟著 master分支
,所以兩個就會自動推進。