协慌网

登录 贡献 社区

你如何重命名 Git 标签?

今天我正在浏览一个项目的日志,并意识到我不久前发了一个标签名称。有没有办法重命名标签?谷歌没有发现任何有用的东西。

我意识到我可以查看标记版本并制作新标签,我甚至尝试过。但这似乎创建了一个不太正确的标签对象。一个,

git tag -l

相对于所有其他标签,它不按顺序列出。我不知道这是否重要,但它让我相信新标签对象不是我想要的。我可以忍受,因为我真的只关心标签名称与文档匹配,但我宁愿 “正确”,假设有正确的方法来做到这一点。

答案

以下是将old标记重命名为new标记的方法:

git tag new old
git tag -d old
git push origin :refs/tags/old
git push --tags

push 命令中的冒号从远程存储库中删除标记。如果你不这样做,当你拉动时,Git 会在你的机器上创建旧标签。

最后,确保其他用户删除已删除的标记。请告诉他们(同事)运行以下命令:

git pull --prune --tags

最初的问题是如何重命名标签,这很简单:首先创建 NEW 作为 OLD 的别名: git tag NEW OLD然后删除 OLD: git tag -d OLD

关于 “Git 方式” 和(in)完整性的引用是不合适的,因为它讨论的是保留标记名称,但使其引用不同的存储库状态。

除了其他答案:

首先,您需要构建标记名称的别名 ,指向原始提交:

git tag new old^{}

然后你需要在本地删除旧的:

git tag -d old

然后删除远程位置上的标记:

# Check your remote sources:
git remote -v
# The argument (3rd) is your remote location,
# the one you can see with `git remote`. In this example: `origin`
git push origin :refs/tags/old

最后,您需要将新标记添加到远程位置。在您完成此操作之前, 不会添加新标记:

git push origin --tags

为每个远程位置迭代这个。

请注意, Git Tag 更改对包的消费者的影响!