星期日, 8月 28, 2016

git describe

用最近的 tag 及其間隔的送交數目來描述一個送交,格式是 <tag>-<間隔的送交數目>-g<短 HASH 碼>,後面可以選擇加是否 dirty。<短 HASH 碼> 前面的 g 代表 git,用來區別 SCM。
指令格式
git describe [--all] [--tags] [--contains] [--abbrev=<n>] [<commit-ish>...]
git describe [--all] [--tags] [--contains] [--abbrev=<n>] --dirty[=<mark>]

尋找最近的 tag,首先先看送交本身有沒有 tag,沒有則往上游找。annotated tag 比 lightweight tag 優先,新的比舊的優先。往上游找 tag 的過程中,可能會因合併的送交而有好幾個候選的 tag,最後以間隔的送交數目少的出線。

預設只找 annotated tag
--tags:也找 lightweight tag
--all:也找 refs/ 下的任何 ref,可能是已知的分支、遠端追蹤的分支、或 lightweight tag。
--contains:也找 lightweight tag,但找下游的 tag
--first-parent:只往第一上游找
--match <pattern>:只找符合 <pattern> 的 tag。(似乎 wildcard <pattern> 有些清況比對會有問題)
--exact-match:只看送交本身的 tag
--candidates=<n>:設定候選 tag 的數目,預設只考慮 10 個,設大於 10 執行會慢一些,但較精準,用 --debug 可看每個候選 tag 的結果。設為 0 相當於 --exact-match。
--debug:在 stderr 顯示對每個 tag 尋找的結果

--abbrev=<n>:設定短 HASH 碼的碼數,預設是 9。設為 0 則不加 HASH 碼。

--dirty[=<mark>]:只能用在 HEAD,增加描述 dirty 的清況,預設加 -dirty,可提供 dirty 時要加的描述,例如 M。較舊版本的 git 無此選項,可用 git status | grep 'Change.*:' 判斷。

--long:送交本身有 tag 時預設不顯示間隔的送交數目及短 HASH 碼,加 --long 參數總是顯示這些部份。
--always:當找不到任何 tag 時,顯示短 HASH 碼

參考來源:git help describe

沒有留言:

張貼留言