git checkout 移動 HEAD 指標

洧杰 已發佈 2019-11-17

在我們正式進入到分支 (branch) 章節時,我們得先了解 HEAD 的觀念,如果你先了解它,接下來講解分支時,會理解得更好。

什麼是 HEAD?

HEAD 就是你目前指向的版本狀態,而 HEAD 可以選擇它指向到

  • 分支 (branch)
  • commit 版本

像是下圖,便是我們用 git init 新增本地數據庫後,新增了 3 個 commit。

在預設狀態時,master 就是我們的預設分支名稱,你可想像有條分支串起好幾個 commit。而此時的 HEAD,他是跟著 master 向前推進的。

images

如果我想看最初的版本?

此時 HEAD 就會派上用場了,我們必須透過他對到我們指定 commit 版。此時我們必須先知道該 commit 的 SHA-1 編號,可以用 git log 查詢。

images

在每個 commit 旁邊的亂數就是 SHA-1 值,可以取前幾碼來準備切換,像我想回到第一個版本,那就是下圖白框處。指令則是

git checkout 1849273<指定 commit SHA-1>

切換後,你就可以看到自己的工作目錄,彷彿用了時光機,回到以前你指定的開發歷史狀態。

而此時的 HEAD 的位置就會被指定到第一個 commit 紀錄上,如下圖。

images

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

images

想再切換到最新狀態的話呢?

你可以使用此指令:

git checkout master

也就是讓 HEAD 再綁定回 master 的分支即可,如下圖。

images

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

images

關於筆者

暱稱:洧杰

介紹:六角學院校長,熱愛分享與交流的前端工程師,目前專注於兼容桌面/移動網頁前端開發,期間已協助數百位平面設計師,網頁設計師導入標準網頁設計。