获取远程标签

Rav*_*i A 4 git

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

git fetch origin <tag name >
Run Code Online (Sandbox Code Playgroud)

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

git checkout <tag name>
Run Code Online (Sandbox Code Playgroud)

现在我尝试执行以下命令。

git fetch --tags
Run Code Online (Sandbox Code Playgroud)

之后命令git checkout <tag name> 执行成功。

您能否帮助理解git fetch origin <tag name>为什么未获取标签。

Von*_*onC 7

git fetch文档确实提到:

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

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

 * tag aTag -> FETCH_HEAD
Run Code Online (Sandbox Code Playgroud)

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

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

更多信息请参阅“显式获取标签后 git 标签似乎不可用

Agit fetch origin refs/tags/<tag name>:refs/tags/<tag name>会起作用的。
不会git checkout <tag name>有产量“ error: pathspec '<tag name>' did not match any file(s) known to git