首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git:区分本地标记和远程标记

Git:区分本地标记和远程标记
EN

Stack Overflow用户
提问于 2011-03-31 07:12:40
回答 3查看 13.5K关注 0票数 29

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-31 07:37:16

如果您对在运行git pull时重新创建这些标记感到恼火,则可以在默认情况下使用remote..tagopt配置设置关闭对标记的抓取。例如,如果遥控器是origin,那么您可以:

代码语言:javascript
复制
git config remote.origin.tagopt --no-tags

更新:为了回应您的评论,我建议这样做的原因是,没有明显的方法区分本地创建的标记和从远程获取的标记。标记也没有reflog。因此,我的建议是禁止自动获取标记-然后您可以自己将它们取到另一个名称空间中。例如,您可以:

代码语言:javascript
复制
git fetch origin +refs/tags/*:refs/tags/origin/*

..。或许还会为之创建一个化名。然后,当您想要获取标记时,它们将被命名,例如,refs/tags/origin/tag1而不是refs/tags/tag1

如果希望这种情况自动发生,可以将.git/config更改为列出用于获取的多个重新规范,例如:

代码语言:javascript
复制
 [remote "origin"]
      url = whoever@whereever:whatever.git
      fetch = +refs/heads/*:refs/remotes/origin/*
      fetch = +refs/tags/*:refs/tags/origin/*

..。那就是suggested in Pro Git

票数 31
EN

Stack Overflow用户

发布于 2011-03-31 07:25:56

标记不是“本地”或“远程”:它与提交相关联,它可以是多个分支的一部分,包括remotes命名空间中的分支。

获取由标记引用的提交的标记SHA1

代码语言:javascript
复制
git show -s 'TAG_NAME^{commit}' --format='%H'

,并做:

代码语言:javascript
复制
git branch -a --contains SHA1

如果你看到

代码语言:javascript
复制
 remotes/aRemoteRepoName/aBranch

您知道标记引用了从远程回购中获取的提交。

正如Chris所提到的:

代码语言:javascript
复制
git branch -a --contains TAGNAME

将取消对标签的引用,并一次给出答案。

票数 10
EN

Stack Overflow用户

发布于 2021-08-26 18:04:05

只要您目前能够访问远程存储库,就可以比较

代码语言:javascript
复制
git ls-remote --tags

使用

代码语言:javascript
复制
git show-ref --tags -d

注意:

  • 远程当前必须是可用的
  • ,如果从远程删除了标签,您将无法判断“本地”标记最初是从远程
  • 中提取的,这将允许您查看远程和本地的标记名称是相同的,但是可以引用不同的提交,或者独立地创建/更新(对于带注释的标签,即使提交散列是相同的),标签散列也是不同的。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5496386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档