该命令获取所有标签:
git fetch origin --tags
该命令获取特定的标签:
git fetch origin refs/tags/1.0.0
但这不允许我这样做:
git checkout tags/2.3.18
如何获取单个标签,然后执行结帐?
git fetch origin refs/tags/1.0.0
失败是因为它没有编写本地引用:它获取远程的refs/tags/1.0.0
,以及与之配套的任何标记对象,提交等。它将它们放入FETCH_HEAD
(就像所有git fetch
命令一样);就是这样。即使它具有执行此操作所需的一切,它也不会refs/tags/1.0.0
在您的存储库中创建引用。
要使其创建这样的标签(如果尚不存在):
git fetch origin refs/tags/1.0.0:refs/tags/1.0.0
冒号右侧的名称是Git将在存储库中使用的名称。例如,您可以wacky
通过命名将其变成一个名为的分支refs/heads/wacky
。(没有理由这样做。我仅出于说明目的进行描述。)
这是非强制获取,因此如果您已经有一个refs/tags/1.0.0
,您的Git将拒绝更新您的参考。如果您想覆盖任何现有1.0.0
标签,请使用:
git fetch origin +refs/tags/1.0.0:refs/tags/1.0.0
如果您希望获取所有标签,可以覆盖或不覆盖:
git fetch origin 'refs/tags/*:refs/tags/*'
有或没有前导加号。(请注意:引号只是为了保护*
您的shell 免受伤害。加号可能位于引号的内部或外部。实际上,引号本身可以在任何位置,只要它们包围所有星号或其他外壳元字符:
refs/tags/'*:refs/tags/*'
或者您可以使用反斜杠代替:
refs/tags/\*:refs/tags/\*
在所有情况下,我们只是保护敏感的星号免受外壳程序的“星号好吃,让我们吃掉”功能。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句