如何重命名 Git 标签

Git 没有直接重命名标签的命令,做法是建新删旧:git tag 新名 旧名(复制指向),git tag -d 旧名,git push origin 新名,git push origin --delete 旧名。已发布的 tag 改名需谨慎。

最佳实践
Git 提交历史与版本恢复示意

Git 不支持直接 rename 标签,用"建新删旧"实现:git tag 新名 旧名 让新标签指向旧标签的提交,git tag -d 旧名 删本地旧的,再分别推送新标签、删除远程旧标签。

操作步骤

# 1. 用旧标签创建新标签(指向同一提交)
git tag v1.1.0 v1.0.0

# 附注标签想保留原说明:
git tag -a v1.1.0 v1.0.0^{} -m "release v1.1.0"

# 2. 删除本地旧标签
git tag -d v1.0.0

# 3. 更新远程
git push origin v1.1.0
git push origin --delete v1.0.0

已发布标签的警告

标签是发布契约:CI 按 tag 构建、用户按 tag 下载、文档引用 tag。改名后:

  • 已下载旧 tag 的用户不受影响(他们的引用还在);
  • 但引用旧名的链接、文档、脚本全部失效;
  • GitHub 上基于旧 tag 的 Release 需要手动重新关联。

发布出去的 tag 宁可补发新 tag 也不要改名。

常见问题(FAQ)

Q:tag 打错了提交(指错位置)怎么办?

同样思路:git tag -d 删掉,git tag 名 正确提交 重建,强推覆盖远程(git push -f origin 标签名)。未被广泛使用的窗口期内操作。

Q:附注标签改名后说明还在吗?

git tag 新名 旧名 只复制指向;想保留完整附注信息用 git tag -a 新名 旧名^{} -m "..."(^{} 解引用到提交),说明需要重新提供。

Q:怎么批量重命名?

没有内建批量操作,脚本循环:for t in $(git tag -l 'release-*'); do git tag "v$t" ... ; done 之类。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台