我使用以下命令来获取远程标签,它通过获取远程对象成功完成。
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>为什么未获取标签。
该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”