Git:区分本地和远程标签

标签 git tags git-tag

如果远程存储库中有标签,我通常会在 pull 时自动获取它们。当我删除创建的本地标签 ( git tag -d <tag-name> ) 并 pull 时,将重新创建已删除的标签。我可以删除远程分支/标签 ( git push <remote-branch/tag-name>:<branch/tag-name> ),但是如何检测到本地标签是通过获取远程标签创建的

最佳答案

如果您对运行 git pull 时重新创建这些标签感到恼火,您可以使用 remote.<remote-name>.tagopt 关闭默认情况下对标签的提取。配置设置。例如如果 Remote 是 origin,那么你可以这样做:

git config remote.origin.tagopt --no-tags

更新:为了解决您的评论,我建议这样做的原因是没有明显的方法来区分本地创建的标签和从远程获取的标签之间的区别。标签也没有 reflog。因此,我的建议是禁止自动获取标签——然后您可以自己将它们获取到不同的命名空间中。例如,您可以这样做:

git fetch origin +refs/tags/*:refs/tags/origin/*

...并可能为此创建一个别名。然后,当您想要获取标签时,它们将被命名,例如,refs/tags/origin/tag1 而不是 refs/tags/tag1


如果你希望它自动发生,你可以更改你的 .git/config 以列出多个用于获取的 refspecs,例如:

 [remote "origin"]
      url = whoever@whereever:whatever.git
      fetch = +refs/heads/*:refs/remotes/origin/*
      fetch = +refs/tags/*:refs/tags/origin/*

... 这是 suggested in Pro Git .

关于Git:区分本地和远程标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5496386/

相关文章:

Git - 在单个命令中提交和标记

git - 如何在 heroku 中创建暂存环境并推送应用程序

git - 使用外部依赖项在 Git 中切换分支

git - check out 带有子模块的 git 存储库时出错

git - 警告和错误的记录不会写入 Powershell 中的日志文件

tags - 如何使Dreamweaver向我显示结束标签?

facebook - 在标题中打开图元标签,以便 Facebook 不被读取

git - 如何设置 TFS 2013 构建定义以从 Git 标签构建?

algorithm - 向用户建议标签列表的算法