如果远程存储库中有标记,我通常会在拖动时自动获取它们。当我删除创建的本地标记(git tag -d <tag-name>)并进行拉时,将重新创建已删除的标记。我可以删除远程分支/标记(git push <remote-branch/tag-name>:<branch/tag-name>),但是如何通过获取远程标记来检测本地标记是否创建?
发布于 2011-03-31 07:37:16
如果您对在运行git pull时重新创建这些标记感到恼火,则可以在默认情况下使用remote..tagopt配置设置关闭对标记的抓取。例如,如果遥控器是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更改为列出用于获取的多个重新规范,例如:
[remote "origin"]
url = whoever@whereever:whatever.git
fetch = +refs/heads/*:refs/remotes/origin/*
fetch = +refs/tags/*:refs/tags/origin/*..。那就是suggested in Pro Git。
发布于 2011-03-31 07:25:56
标记不是“本地”或“远程”:它与提交相关联,它可以是多个分支的一部分,包括remotes命名空间中的分支。
获取由标记引用的提交的标记SHA1
git show -s 'TAG_NAME^{commit}' --format='%H',并做:
git branch -a --contains SHA1如果你看到
remotes/aRemoteRepoName/aBranch您知道标记引用了从远程回购中获取的提交。
正如Chris所提到的:
git branch -a --contains TAGNAME将取消对标签的引用,并一次给出答案。
发布于 2021-08-26 18:04:05
只要您目前能够访问远程存储库,就可以比较
git ls-remote --tags使用
git show-ref --tags -d注意:
https://stackoverflow.com/questions/5496386
复制相似问题