2014-10-28 72 views
7

如果我在标签上克隆最大深度为1的存储库,它可以正常工作并拉下来。如果我然后想为新标签进行深度为1的抓取,它会进行一些处理,但标签从不出现在'git标签'下。如果我提供--tags选项,它会下载整个存储库,而不仅仅是新的信息。我不介意存储库获得更多的历史记录,我只是想避免下载时间。有没有办法获得一个新的标签而没有从浅层克隆的仓库获取所有标签?Git对新标签的浅取

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 ... 标签为深化提交并不牵强。”

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

回答

7

你可以使用全<refspec>格式:

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

或者,如git-fetch options规定(<refspec>下):

tag <tag>的含义一样refs/tags/<tag>:refs/tags/<tag>;它 请求获取到给定标签的所有内容。

因此短期形式回答你的问题会

git fetch --depth 1 origin tag 1.1 
+0

真棒,即做到了。我没有完全阅读refspec。我想你只需要放一条路,而不是远程:本地。我猜这个令人困惑的部分是因为它做了一些工作而感到有用......谢谢 – 2014-10-29 14:11:34