← 上一章:使用標籤 下一章:【狀況題】手邊的工作做到一半,臨時要切換到別的任務 →


【冷知識】標籤跟分支有什麼不一樣?

其實標籤跟分支是很像的東西,來把它們從 .git 目錄裡翻出來看看:

git folder

標籤跟分支都是一種指標,也都是放在 .git/refs 目錄下,只是分支是在 heads 目錄,標籤則是在 tags 目錄。

裡面的內容也長得很像,都是 40 個字元的 SHA-1 值:

$ cat .git/refs/heads/master
db3bbec63301d1c638e828c9a38a29314c8a0c44

$ cat .git/refs/tags/big_cats
552a844022bad7f24c5e6e3b0fc2528c8ec86df7

在被刪除的時候,也不會影響到被指到的那個物件。

其實標籤跟分支真正的差別,是「分支會隨著 Commit 而移動,但標籤不會」。在「對分支的誤解」章節曾介紹過,當 Git 往前推進一個 Commit 的時候,它所在的分支會跟著往前移動。但標籤一旦貼上去之後,不管 Commit 怎麼前進,標籤還是留在原來貼的那個位置上。

所以你可以把分支看成「會移動的標籤」。

在電影《海角七號》有一句經典台詞:「留下來,或我跟你走」,用在這邊差不多是「留下來的是標籤,跟你走的是分支」的概念吧。


← 上一章:使用標籤 下一章:【狀況題】手邊的工作做到一半,臨時要切換到別的任務 →

Comments