標籤,給各類對象上添加標籤,方便查找。通常是給commit上添加標籤。
標籤對象的增,刪,查(詳細信息),檢索。
官網地址:https://git-scm.com/docs/git-tag
1、新增
格式如下:
git tag [-a | -s | -u <keyId>] [-f] [-m <msg> | -F <file>] [-e] <tagname> [<commit> | <object>]
元信息:
-m:tag的日誌信息
-F<file>:日誌信息從文件中讀取,不常用,略。
tagName:標籤的名稱
<commit> | object:tag表示的對象,通常爲commmit對象。用戶通常不會接觸到tree和blob對象
註解 & 簽名:
-a, annotate:給tag添加註解,即需要添加-m選項,默認值。
-s, signature:給tag添加簽名。
-u <keyid>:給tag添加GPG簽名。
常規選項:
-f, force,強制,若存在同名,則覆蓋
-e:全稱爲edit,開啓編輯模式
創建之後,可以在./git/refs/tag目錄下查看到tag對象,文件名稱爲tag名稱。
示例:git tag -f -m “初始化提交” first_commit HEAD
2、查詢
格式如下:
git tag -v [--format=format] <tagname>
查詢所有tag,執行git tag [–-list(-l) | -n]。
根據條件查詢tag, 執行git tag –-list(-l) | grep <some condition>
查詢單個tag的詳細信息, 執行 git tag -v <tagname>,執行的結果:
object c3ba4209641fa2539a14fb3487a302a34f5c4270 type commit tag first_commit tagger WorldInNet <[email protected]> 1592489554 +0800 初始化提交
Object表示tag關聯的對象ID, 第二行表示關聯的對象類型爲Commit,第三行顯示tag的名稱,第四行顯示創建tag的用戶名和郵箱,以及創建時間。最後一行顯示tag的日誌信息。
3、檢索
格式爲:
git tag [-n[<num>]] -l [--contains <commit>] [--no-contains <commit>][--points-at <object>]
[--column[=<options>] | --no-column] [--create-reflog] [--sort=<key>] [--format=<format>] [--[no-]merged [<commit>]] [<pattern>…]
根據commitID查詢tag,執行git tag –-contains commitID,會顯示指向commitID的tag列表,--no-contains正好相反。
根據CommitID查詢tag,執行git tag –-points-at commitID,顯示指向commitId的tag列表。
根據提交歷史是否可達查詢tag,執行git tag –-merged commitID,會顯示執行當前commitID所有可達提交的tag列表,--no-merged正好相反。若只有一個分支,都是可達的,會列出所有的tag。
根據tag的名稱查詢tag,執行git tag -l <pattern>,pattern可以是tag的名稱,也可以是正則表達式。例如*_tag,會查詢出所有以_tag後綴的tag列表。
條件:
--[no-]contains <commit>:是否包含commit對應的tag
--points-at <object>:當前object對應的tag列表
--[no-]merged :是否包含分支合併產生的commit對象對應的tag
<pattern>:tag名稱的格式
顯示格式:
-n:最多顯示日誌信息的n行
-column, --no-column:表格方式展示tag列表,需要column.tag配置項,若無,不會有效果。tag存在日誌信息時,也無效果。
--sort=<key>,排序,key值參考tag.sort配置項。
4、刪除
刪除tag的格式如下:
git tag -d <tagname>
-d全稱爲delete,表示刪除的含義。較爲簡單。當tag名稱不存在時,報錯,提示信息爲”tag xx not found”
示例:git tag -d first_commit。