47

我用轻量级标签标记了提交,并将该标签推送到远程仓库,与其他开发人员共享。我现在意识到我应该对它进行注释,以便它出现在git describe.

有没有办法在不破坏东西的情况下转换它/重新标记提交?

4

4 回答 4

38

轻量级标签只是指向该提交的“参考”。您可以在旧标签之上强制创建一个新的注释标签:

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

从 Git v1.8.2 开始,您需要使用--force替换远程上的任何标签git push,即使您将轻量级标签替换为有效的快进或指向与现有提交相同的真实标签对象的东西标签参考。

git push --force origin <tagname>
于 2011-02-15T11:11:35.090 回答
23

根据查尔斯的回答这篇博文,我认为最好使用这样的东西:

#!/bin/sh
tag=$1
date="$(git show $tag --format=%aD | head -1)"
GIT_COMMITTER_DATE="$date" git tag -a -f $tag $tag
于 2014-01-09T22:21:51.167 回答
4

将所有标签转换为带注释的(基于 Charles Bailey 的示例和 Ferenc Wágner 的评论):

for tag in $(git tag -l); do git tag -a -f $tag $tag^0 -m $tag; done
git push --tags --force
于 2016-10-20T10:31:19.950 回答
2

您也可以简单地使用git describe --tags在搜索中包含轻量级标签。

于 2014-11-05T10:06:14.627 回答