2011-02-15 84 views
26

我用一個輕量級標記標記了一個提交,並將該標記推送到與其他開發人員共享的遠程回購。我現在已經意識到我應該註釋它,以便它出現在git describe輕量級標籤可以轉換爲註釋標籤嗎?

有沒有辦法轉換它/重標記提交而不破壞事情?

回答

23

一個輕量級標籤只是一個指向該提交的'ref'。在舊標籤的頂部,你可以強制創建一個新的註釋標籤:

git tag -a -f <tagname> <tagname> 

正如吉特v1.8.2的,你需要使用--force以取代git push一個搖控器上的標籤,即使要更換一個輕量級標籤,其中有一些實際上是快進或真實標籤對象,指向與現有標籤引用相同的提交。

git push --force origin <tagname> 
+3

但不會在使用混亂的日期? – SamB 2014-01-09 19:06:49

+1

另外,對於已經拉動原始輕量級標籤的開發者是否有任何影響?那些開發者在再次拉動新標籤後會看到註釋,還是需要做一些特殊的事情(如刪除他們的本地標籤)? – sschuberth 2015-07-23 10:23:21

17

基於Charles' answerthis blog post,我認爲這是更好地使用這樣的事情:

#!/bin/sh 
tag=$1 
date="$(git show $tag --format=%aD | head -1)" 
GIT_COMMITTER_DATE="$date" git tag -a -f $tag $tag 
2

你也可以簡單地使用git describe --tags也包括在搜索輕量級標籤。

1

轉換所有標籤註解(基於查爾斯·貝利的例子,費倫茨·瓦格納的評論):

for tag in $(git tag -l); do git tag -a -f $tag $tag^0 -m $tag; done 
git push --tags --force 
相關問題