自从我创建了我的存储库后,看来我创建的标签没有被推送到存储库.当我git tag在本地目录上执行所有标记时,但是当我登录到远程存储库并执行操作时git tag,只显示前几个标记.
问题是什么?
eev*_*var 233
你可以这样做:
git push --tags
Run Code Online (Sandbox Code Playgroud)
Jak*_*ski 135
在默认的git远程配置中,您必须显式地推送标签(当它们与它们指向的提交一起自动提取时).你需要使用
$ git push <remote> tag <tagname>
Run Code Online (Sandbox Code Playgroud)
推送单个标签,或
$ git push <remote> --tags
Run Code Online (Sandbox Code Playgroud)
推送所有标签(或git push --tags通常推送到默认遥控器origin).
这是非常有用的行为,可以使推送标签显式化.推送标签通常应该是有意识的选择.
总结Junio C. Hamano 所写的内容(链接在@Andre Miras的评论中)
在获取时,您正在与某人已发布的远程存储库进行交互,这意味着:
- 那里存在的标签集是所有发布者都希望人们看到的,以及
- 不仅你,而且其他人也会看到相同的标签.
换句话说,您从中获取的存储库中的标记被设计为公共和共享.如果每个人都很容易获取这些相同的标签,它将促进开发人员之间的沟通.
这就是为什么git fetch自动"跟随"标签,即在下载他们指向的修订版时下载标签 - 换句话说,下载所有相关的已发布标签.
按下时,你从你的工作仓库,其中大部分时间是不公开的推进,并在仓库标签的目的不是要公开.您可以使用自己的本地标签来标记你的进步,所以它没有任何意义盲目推动所有标签在你的资料库,以你是推到发布更改,其标签被定义公共资源库.
这就是为什么你需要明确地推送标签,将标签标记为公共标签.
或者,您可以配置您推送的遥控器以始终推送所有标签,例如在您的内容中添加类似的内容.git/config:
[remote "publish"] # or whatever it is named
url = ...
push = +refs/heads/*:refs/heads/*
push = +refs/tags/*:refs/tags/*
这意味着强制推动所有头部(所有分支)和所有标签(如果您不想强制推动头部,请从refspec中删除'+'前缀).
Von*_*onC 60
请注意,自git 1.8.3(2013年4月22日)以来,您不再需要执行2个命令来推送分支,然后推送标记:
新的"
--follow-tags"选项告诉"git push" 在推出分支时推送相关的带注释的标签.
您现在可以在推送新提交时尝试:
git push --follow-tags
Run Code Online (Sandbox Code Playgroud)
这不会推送所有本地标签,只有被提交引用的带注释的标签git push.
这是由Junio C Hamano (gitster)在commit c2aba15中引入的:
新选项"
--follow-tags"告诉"git push"推送另一侧缺少的注释标签,并且可以通过其他方式推出的历史记录到达.例如,如果您使用"
simple","current"或"upstream"推送,则通常会将历史记录推送到您当前的提交HEAD而不是其他任何内容.
使用此选项,您还可以将可以从该提交到达的所有带注释的标记推送到另一侧.
配置push.followTags允许--follow-tags默认包含(Git 2.4.1 +,2015年第2季度).请参阅" 同时推送git提交和标记 "
mat*_*mat 19
我通常做的是:
[remote "publish"] # or whatever it is named
url = ...
push = :
push = +refs/tags/*:refs/tags/*
这意味着它会推动已经存在的每个分支以及标记.它不会强制推动,并且它不会推动您没有手动推动的分支.
如果你想强制获取所有标签,你可以通过以下方式在配置中设置它:
git config remote.origin.tagopt --tags
Run Code Online (Sandbox Code Playgroud)
从文档:
将此值设置为 --no-tags 会在从 remote 获取时禁用自动标记跟随。将其设置为 --tags 将从 remote 获取每个标签,即使它们无法从远程分支头访问。将这些标志直接传递给 git-fetch(1) 可以覆盖此设置。请参阅 git-fetch(1) 的选项 --tags 和 --no-tags。