ale*_*son 18 git git-fetch git-checkout git-tag
此命令获取所有标记:
git fetch origin --tags
Run Code Online (Sandbox Code Playgroud)
此命令获取特定标记:
git fetch origin refs/tags/1.0.0
Run Code Online (Sandbox Code Playgroud)
但这不让我这样做:
git checkout tags/2.3.18
Run Code Online (Sandbox Code Playgroud)
如何获取单个标签然后执行结帐?
tor*_*rek 30
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
Run Code Online (Sandbox Code Playgroud)
冒号右侧的名称是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
Run Code Online (Sandbox Code Playgroud)
如果您希望获取所有标签,无论是否覆盖:
git fetch origin 'refs/tags/*:refs/tags/*'
Run Code Online (Sandbox Code Playgroud)
有或没有领先的加号.(注意:引号只是为了保护*
你的shell.加号可以在引号的内部或外部.实际上,只要它们包围所有的星号或其他shell元字符,引号本身就可以去任何地方:
refs/tags/'*:refs/tags/*'
Run Code Online (Sandbox Code Playgroud)
或者您可以使用反斜杠:
refs/tags/\*:refs/tags/\*
Run Code Online (Sandbox Code Playgroud)
在所有情况下,我们只是保护敏感的星号免受外壳的"星号好吃,让我们吃它们"的功能.)
Oll*_*leg 25
我阅读了所有答案,但还没有提到一种语法糖。如果您只需要获取一个标签作为标签(稍后结帐),您可以编写,例如refs/tags/2.3.18
:
git fetch origin tag 2.3.18 --no-tags
Run Code Online (Sandbox Code Playgroud)
这是已经提到的快捷方式:
git fetch origin refs/tags/2.3.18:refs/tags/2.3.18 --no-tags
Run Code Online (Sandbox Code Playgroud)
当然,--no-tags
如果您需要其他标签(根据默认行为)或者如果您已经--no-tag
在clone
命令或tagOpt
配置选项(man git-clone
)中明确设置,您可能不会使用。
git fetch origin tag 2.3.18
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14174 次 |
最近记录: |