我用一個輕量級標記標記了一個提交,並將該標記推送到與其他開發人員共享的遠程回購。我現在已經意識到我應該註釋它,以便它出現在git describe
。輕量級標籤可以轉換爲註釋標籤嗎?
有沒有辦法轉換它/重標記提交而不破壞事情?
我用一個輕量級標記標記了一個提交,並將該標記推送到與其他開發人員共享的遠程回購。我現在已經意識到我應該註釋它,以便它出現在git describe
。輕量級標籤可以轉換爲註釋標籤嗎?
有沒有辦法轉換它/重標記提交而不破壞事情?
一個輕量級標籤只是一個指向該提交的'ref'。在舊標籤的頂部,你可以強制創建一個新的註釋標籤:
git tag -a -f <tagname> <tagname>
正如吉特v1.8.2的,你需要使用--force
以取代git push
一個搖控器上的標籤,即使要更換一個輕量級標籤,其中有一些實際上是快進或真實標籤對象,指向與現有標籤引用相同的提交。
git push --force origin <tagname>
基於Charles' answer和this blog post,我認爲這是更好地使用這樣的事情:
#!/bin/sh
tag=$1
date="$(git show $tag --format=%aD | head -1)"
GIT_COMMITTER_DATE="$date" git tag -a -f $tag $tag
你也可以簡單地使用git describe --tags
也包括在搜索輕量級標籤。
轉換所有標籤註解(基於查爾斯·貝利的例子,費倫茨·瓦格納的評論):
for tag in $(git tag -l); do git tag -a -f $tag $tag^0 -m $tag; done
git push --tags --force
但不會在使用混亂的日期? – SamB 2014-01-09 19:06:49
另外,對於已經拉動原始輕量級標籤的開發者是否有任何影響?那些開發者在再次拉動新標籤後會看到註釋,還是需要做一些特殊的事情(如刪除他們的本地標籤)? – sschuberth 2015-07-23 10:23:21