我用一个轻量级标记标记了一个提交,并将该标记推送到与其他开发人员共享的远程回购。我现在已经意识到我应该注释它,以便它出现在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