14

如果我在标签处克隆一个最大深度为 1 的存储库,它会起作用并拉下它。如果我想对新标签进行深度为 1 或不为 1 的提取,它会进行一些处理,但该标签永远不会出现在“git tag”下。如果我提供 --tags 选项,它会下载整个存储库,而不仅仅是新信息。我不介意存储库获得更多历史记录,我只想避免下载时间。有没有办法在不从浅克隆存储库中获取所有标签的情况下获取新标签?

git clone --branch 1.0 --depth 1 repositoryPath
git fetch --depth 1 origin tags/1.1 # Does processing but no new tags
git fetch --tags origin tags/1.1 # Pulls down the rest of the repository and adds all tags
git fetch --depth 1 --tags origin tags/1.1 # Same as above

现在,我在文档中注意到了这一点:“--depth ...未获取深化提交的标签。”

这是我遇到的吗?除了下载所有标签之外,有没有办法做到这一点?

4

1 回答 1

20

您可以使用完整<refspec>格式:

git fetch --depth 1 origin refs/tags/1.1:refs/tags/1.1

或者,如git-fetch 选项(在 下<refspec>)中指定的那样:

tag <tag>意思相同refs/tags/<tag>:refs/tags/<tag>;它请求获取到给定标签的所有内容。

所以你的问题的简短答案是

git fetch --depth 1 origin tag 1.1
于 2014-10-28T22:03:29.517 回答