?
本文檔使用 php中文網(wǎng)手冊(cè) 發(fā)布
git-describe - 描述一個(gè)使用它可以訪問的最近標(biāo)簽的提交
git describe [--all] [--tags] [--contains] [--abbrev=<n>] [<commit-ish>…]git describe [--all] [--tags] [--contains] [--abbrev=<n>] --dirty[=<mark>]
該命令查找可從提交中訪問的最新標(biāo)記。如果標(biāo)簽指向提交,則只顯示標(biāo)簽。否則,它會(huì)將標(biāo)記名稱與標(biāo)記對(duì)象頂部的附加提交數(shù)量以及最近提交的縮寫對(duì)象名稱后綴相加。
默認(rèn)情況下(沒有--all 或--tags)git describe
只顯示帶注釋的標(biāo)簽。有關(guān)創(chuàng)建帶注釋的標(biāo)簽的更多信息,請(qǐng)參閱 git-tag [1]中-a和-s選項(xiàng)。
<commit-ish>…
提交對(duì)象名稱來描述。如果省略,則默認(rèn)為 HEAD。
--dirty=<mark> --broken=<mark>
描述工作樹的狀態(tài)。當(dāng)工作樹與 HEAD 匹配時(shí),輸出與“git describe HEAD”相同。如果工作樹具有本地修改,則將“-dirty”附加到其上。如果存儲(chǔ)庫(kù)已損壞, Git 無法確定是否存在本地修改,那么 Git 將會(huì)出錯(cuò),除非給出了“--broken”,而是附加后綴“-broken”。
--all
不要只使用帶注釋的標(biāo)簽,而應(yīng)使用refs/
名稱空間中的任何參考。該選項(xiàng)可以匹配任何已知的分支,遠(yuǎn)程追蹤分支或輕量級(jí)標(biāo)簽。
--tags
不要只使用帶注釋的標(biāo)簽,而要使用refs/tags
名稱空間中的任何標(biāo)簽。該選項(xiàng)可以匹配一個(gè)輕量級(jí)(未注釋)的標(biāo)簽。
--contains
不是找到提交之前的標(biāo)簽,而是找到提交之后的標(biāo)簽,因此包含它。自動(dòng)地表明 - 標(biāo)簽。
--abbrev=<n>
使用默認(rèn)的7位十六進(jìn)制數(shù)字作為縮寫對(duì)象名稱,而不是使用<n>數(shù)字或根據(jù)需要的數(shù)字來組成一個(gè)唯一的對(duì)象名稱。0 的<n>將抑制長(zhǎng)格式,只顯示最接近的標(biāo)簽。
--candidates=<n>
而不是只考慮最近的10個(gè)標(biāo)簽作為描述輸入提交的候選者,而是考慮到候選者。將<n>增加到10以上會(huì)稍微長(zhǎng)一些,但可能會(huì)產(chǎn)生更準(zhǔn)確的結(jié)果。0的<n>將只會(huì)導(dǎo)致精確的匹配輸出。
--exact-match
只輸出完全匹配(一個(gè)標(biāo)簽直接引用提供的提交)。這是--candidates = 0的同義詞。
--debug
精確地顯示正在使用的搜索策略的信息以標(biāo)準(zhǔn)錯(cuò)誤。標(biāo)簽名稱仍將打印到標(biāo)準(zhǔn)輸出。
--long
即使與標(biāo)簽匹配,始終輸出長(zhǎng)格式(標(biāo)簽,提交數(shù)量和縮寫提交名稱)。當(dāng)您想要在“describe”輸出中查看部分提交對(duì)象名稱時(shí),即使提交的問題恰好是標(biāo)記的版本時(shí),這也很有用。它不會(huì)僅僅發(fā)出標(biāo)簽名稱,而是會(huì)描述這樣的提交,如v1.2-0-gdeadbee(自從標(biāo)簽 v1.2指向 object deadbee 之后的第0次提交)。
--match <pattern>
只考慮與給定glob(7)
模式匹配的標(biāo)簽,不包括“refs / tags /”前綴。這可以用來避免從存儲(chǔ)庫(kù)泄漏私有標(biāo)簽。如果給定多次,模式列表將被累積,并且將考慮匹配任何模式的標(biāo)簽。使用--no-match
清除和復(fù)位的模式列表。
--exclude <pattern>
不要考慮與給定glob(7)
模式匹配的標(biāo)簽,不包括“refs / tags /”前綴。這可以用來縮小標(biāo)簽空間并僅查找符合某些有意義標(biāo)準(zhǔn)的標(biāo)簽。如果給定多次,模式列表將被累積,并且匹配任何模式的標(biāo)簽將被排除。當(dāng)與--match 結(jié)合使用時(shí),當(dāng)匹配至少一個(gè)匹配模式并且不匹配任何 - 排除模式時(shí),將會(huì)考慮它。使用--no-exclude
清除和復(fù)位的模式列表。
--always
顯示唯一縮寫的提交對(duì)象作為后備。
--first-parent
在查看合并提交后,只跟蹤第一個(gè)父提交。當(dāng)您希望不匹配目標(biāo)提交歷史記錄中合并的分支上的標(biāo)簽時(shí),這非常有用。
有了些像 git.git 流樹之類的東西,我得到:
[torvalds@g5 git]$ git describe parent v1.0.4-14-g2414721
即我的“父”分支的當(dāng)前頭是基于v1.0.4,但由于它有幾個(gè)提交,describe 已經(jīng)增加了提交的次數(shù)(“14”)和提交的縮寫對(duì)象名本身(“2414721”)最后。
額外提交的數(shù)量是“git log v1.0.4..parent”顯示的提交數(shù)量。哈希后綴是“-g”+父代提示提交(這是2414721b194453f058079d897d13c4e377f92dc6
)的7個(gè)字符的縮寫。“g”前綴代表“git”,用于描述軟件的版本,具體取決于管理軟件的 SCM。這在人們可能使用不同 SCM 的環(huán)境中很有用。
在標(biāo)簽名上做一個(gè)git describe
標(biāo)簽只會(huì)顯示標(biāo)簽名稱:
[torvalds@g5 git]$ git describe v1.0.4v1.0.4
使用--all命令可以使用分支頭作為參考,因此輸出也顯示參考路徑:
[torvalds@g5 git]$ git describe --all --abbrev=4 v1.0.5^2tags/v1.0.0-21-g975b
[torvalds@g5 git]$ git describe --all --abbrev=4 HEAD^heads/lt/describe-7-g975b
將--abbrev 設(shè)置為0,可以使用該命令查找沒有任何后綴的最接近的標(biāo)記名:
[torvalds@g5 git]$ git describe --abbrev=0 v1.0.5^2tags/v1.0.0
請(qǐng)注意,如果今天輸入這些命令,那么獲得的后綴可能比 Linus 在運(yùn)行這些命令時(shí)看到的要長(zhǎng),因?yàn)槟?Git 存儲(chǔ)庫(kù)可能具有新的提交,其對(duì)象名稱以975b開頭,并且當(dāng)時(shí)不存在,“ - g975b“后綴可能不足以消除這些提交的歧義。
對(duì)于每個(gè)提交的提交,git describe
都將首先查找一個(gè)標(biāo)簽,該標(biāo)簽完全標(biāo)記該提交。注釋標(biāo)簽總是比輕量級(jí)標(biāo)簽更受歡迎,并且具有較新日期的標(biāo)簽始終優(yōu)先于較早日期的標(biāo)簽。如果找到完全匹配,則會(huì)輸出其名稱并停止搜索。
如果沒有找到完全匹配,git describe
則會(huì)遍歷提交歷史記錄以找到已標(biāo)記的祖先提交。祖先的標(biāo)簽將與輸入提交的 SHA-1的縮寫一起輸出。如果--first-parent
被指定,則散步將只考慮每個(gè)提交的第一個(gè)父代。
如果在步行期間找到多個(gè)標(biāo)簽,那么將選擇并輸出具有與輸入提交不同的最少提交的標(biāo)簽。這里最少的提交不同的定義為提交的數(shù)量git log tag..input
將會(huì)是最小的提交數(shù)量。