在下面幾行:「混帳形容」忽略標籤
$ git tag -n1
v1.8 Tagged the day before yesterday
v1.9 Tagged yesterday
v2.0 Tagged today
$ git describe
v1.9-500-ga6a8c67
$
任何人都可以解釋爲什麼V2.0標籤不使用「git的描述」,以及如何解決這一問題? v2.0標籤已被推送,所以我猜測我不能只是刪除並重新添加它。
在下面幾行:「混帳形容」忽略標籤
$ git tag -n1
v1.8 Tagged the day before yesterday
v1.9 Tagged yesterday
v2.0 Tagged today
$ git describe
v1.9-500-ga6a8c67
$
任何人都可以解釋爲什麼V2.0標籤不使用「git的描述」,以及如何解決這一問題? v2.0標籤已被推送,所以我猜測我不能只是刪除並重新添加它。
git describe
默認情況下僅使用帶註釋的標籤。指定--tags
選項以使其使用輕量級代碼
確保您簽出了正確的提交(git rev-parse HEAD
)。帶註釋的標籤使用git tag -a
創建。如果你做git show <tagname>
,你只看到提交,它是一個輕量級標記,如果你看到一個附加標記消息它是一個帶註釋的標記。
當這發生在我們身上時,這是兩個標籤應用於相同提交的情況。你可以發現,如果這是通過運行
# git log --oneline --decorate=short
deba4b4 (tag: v1.1.0.20.0, tag: v1.1.0.19.0) 001 New buildnumber
的情況下,這裏有兩個標籤,一個是19版和其他的20 20 19後標籤,但相同的承諾。在這種情況下,描述返回
# git describe --tags
v1.1.0.19.0
我不知道它爲什麼這樣做,但這是它似乎如何處理重複標籤。
可能發生這種情況的另一種情況是,如果您在分支中有更接近您的標籤。該案例已在this blog post中解釋。
我有類似的問題,所以我想最好的辦法是防止創建重複的註釋標籤。你知道我能做到嗎? – 2015-11-22 05:49:21
@jbucaran我想你需要運行一個檢查,然後標記或不標記的基礎上。這可能是另一個問題的話題 – eis 2016-11-22 15:34:39
的問題是git tag
顯示所有分支都標籤而git describe
只有在提交這在目前分支都可以使用標籤。
下面是一個例子(爲什麼我竟然來到這裏的原因):
$ git tag | tail -n3
v0.4.0
v0.4.1
v0.4.2
它顯示可用的最新標籤是v0.4.2
,但是這是我的git describe
輸出:
$ git describe --tags
v0.4.0-2-acd334c
我在開發分支上。當我深入到日誌中,我看到的確是最近的標籤不可在當前分支:
$ git log --oneline --decorate=short | grep '\(tag\:' | head -n3
acd334c (tag: v0.4.0) Merge pull request #1061
988fe5e (tag: v0.3.6) Merge pull request #859
5f97274 (tag: v0.3.5) Merge pull request #646
所以在我的情況下,開發商決定專門創建一個新的發佈分行標記發佈其導致開發分支不再符合標籤的日期。
希望幫助和感謝@eis的想法與檢查日誌。
另請參閱https://stackoverflow.com/questions/33851344/git-describe-fails-to-return-most-recent-annotated-tag – caw 2017-07-03 19:13:04