我使用轻量级标记标记了一个提交,并将该标记推送到远程仓库,与其他开发人员共享。我现在意识到我应该注释它,以便它出现在git describe
。
有没有办法转换它/重新标记提交而不会破坏事物?
答案 0 :(得分:29)
轻量级标记只是指向该提交的“ref”。您可以在旧标记的顶部强制创建新的带注释标记:
git tag -a -f <tagname> <tagname>
从Git v1.8.2开始,您需要使用--force
将git push
上的任何标签替换为git push --force origin <tagname>
,即使您要将轻量级标签替换为实际上是快进的内容或者指向与现有标记引用相同的提交的真实标记对象。
{{1}}
答案 1 :(得分:20)
根据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
答案 2 :(得分:2)
您还可以使用git describe --tags
在搜索中包含轻量级标记。
答案 3 :(得分:1)
将所有标签转换为注释(基于Charles Bailey的例子和FerencWágner的评论):
for tag in $(git tag -l); do git tag -a -f $tag $tag^0 -m $tag; done
git push --tags --force