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 查詢。
mh1b5.png)
在每個 commit 旁邊的亂數就是 SHA-1 值,可以取前幾碼來準備切換,像我想回到第一個版本,那就是下圖白框處。指令則是
git checkout 1849273<指定 commit SHA-1>切換後,你就可以看到自己的工作目錄,彷彿用了時光機,回到以前你指定的開發歷史狀態。
而此時的 HEAD 的位置就會被指定到第一個 commit 紀錄上,如下圖。

假使我們用 sourtree 查看,你也會發現 HEAD 的變化。

想再切換到最新狀態的話呢?
你可以使用此指令:
git checkout master也就是讓 HEAD 再綁定回 master 的分支即可,如下圖。

接下來當你又新增一個 commit 時,因為 HEAD 跟著 master分支,所以兩個就會自動推進。
