【问题标题】:Fetching a remote tag获取远程标签
【发布时间】:2020-02-16 13:33:20
【问题描述】:

我使用以下命令来获取远程标签,它通过获取远程对象成功完成。

git fetch origin <tag name >

之后给出了以下命令来切换到标签,但它给出了error: pathspec 错误。

git checkout <tag name>

现在我尝试了以下命令。

git fetch --tags

之后命令git checkout &lt;tag name&gt;执行成功。

您能否在git fetch origin &lt;tag name&gt; 期间帮助理解为什么未提取标签。

【问题讨论】:

    标签: git


    【解决方案1】:

    git fetch documentation 确实提到:

    默认情况下,指向从远程存储库下载的对象的标签会被提取并存储在本地

    但是:如果您正在获取直接引用标签名称的 refspec,那么您实际上是在获取标签指向的内容,但是您没有指定 refspec destination
    所以你只看到:

     * tag aTag -> FETCH_HEAD
    

    标签引用被复制到.git/FETCH_HEAD,但不是在本地创建。

    相对于git fetch --tags,这相当于使用引用规范refs/tags/*:refs/tags/*:指定了源(tags/*目标(在您的存储库中:tags/*),远程标签是在本地创建的。

    在“A git tag doesn't seem to be available after explicitly fetching the tag”查看更多信息

    git fetch origin refs/tags/&lt;tag name&gt;:refs/tags/&lt;tag name&gt; 会起作用。
    git checkout &lt;tag name&gt; 不会产生“error: pathspec '&lt;tag name&gt;' did not match any file(s) known to git

    【讨论】:

    • 我已经克隆了https://github.com/Azure/azure-iot-sdk-c.git 并试图获取标签git fetch refs/tag/1.3.4:refs/tag/1.3.4,但它给出了错误。克隆命令和获取命令输出为pasted
    • git fetch --tags,然后是 git tag -l 返回什么?你在那里看到你的 1.3.4 标签了吗?
    • git tag -l 列出标签 1.3.4。命令输出pasted
    • 我在 .git/config 中添加了fetch = +refs/tags/*:refs/remotes/origin/tags/* 然后git fetch origin 1.3.4 成功,output。在修改.git/config文件之前,我尝试过git fetch refs/tags/1.3.4:refs/remotes/origin/tags/1.3.4,但它给出了错误fatal: 'refs/tags/1.3.4:refs/remotes/origin/tags/1.3.4' does not appear to be a git repository
    • @RaviA 这是git fetch refs/tags/&lt;tag name&gt;:refs/tags/&lt;tag name&gt;tags/,而不是tag/。我已经相应地编辑了答案。
    猜你喜欢
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2019-03-10
    • 2015-09-15
    • 2014-01-11
    • 2012-05-01
    • 2016-06-16
    相关资源
    最近更新 更多