Pages - Menu

2022年2月17日 星期四

[Git] git refs,branch 跟 tag是一樣的。

前言

這好像是為了查 drone的自動部署,
為什麼tag跟 branch不能同時符合條件才做發佈的原理。


正文

git的主要架構其實都圍繞著 refs ,
branch 跟 tag 其實是一樣的東西,
直接去看 .git的資料夾,可以看到下面的架構。

    tree .git/refs

├── heads
│ ├── apm2
│ └── testapmlog
├── remotes
│ └── origin
│ ├── HEAD
│ ├── apm2
│ ├── dev_spring20211027
└── tags

heads 目錄,描述在本機上的所有分支,每一個檔案對應相應的目錄。
開啟檔案的話,會看到一個commit的雜湊值,
而不管是branch 或 tag 都是根據此雜湊值,來決定你程式目前是哪個版本。

cat .git/refs/heads/apm2

git log -1 apm2 
or
git show apm2

這兩個的雜湊值會一樣,
所以建立一個新的分支,對git來說,也只是將當下的雜湊值寫到一個檔案內。

ref.

沒有留言:

張貼留言