我正在尝试如何下载Git存储库的特定标签,它比当前版本落后一个版本。
我看到git网页上有一个前一个版本的标记,对象名是长十六进制数。
但根据网站的说法,版本名为“标记版本1.1.5”。
我尝试了这样的命令(名称已更改):
git clone http://git.abc.net/git/abc.git my_abc
我确实得到了一些东西——一个目录,一堆子目录等等。
如果它是整个存储库,我如何获得我正在寻找的版本?如果没有,我如何下载该特定版本?
我正在尝试如何下载Git存储库的特定标签,它比当前版本落后一个版本。
我看到git网页上有一个前一个版本的标记,对象名是长十六进制数。
但根据网站的说法,版本名为“标记版本1.1.5”。
我尝试了这样的命令(名称已更改):
git clone http://git.abc.net/git/abc.git my_abc
我确实得到了一些东西——一个目录,一堆子目录等等。
如果它是整个存储库,我如何获得我正在寻找的版本?如果没有,我如何下载该特定版本?
当前回答
我经常使用一个
git clone --branch <tag_name> <repo_url>
其他回答
根据彼得·约翰逊的回答,我为自己创建了一个很好的别名:
alias gcolt="git checkout $(git tag | sort -V | tail -1)"
又名“git checkout最新标签”。
这依赖于GNU版本的sort,它可以恰当地处理lOranger指出的情况:
v1.0.1
...
v1.0.9
v1.0.10
如果您使用的是mac,请brew安装coreutils,然后调用gsort。
使用--singlebranch开关(从Git 1.7.10开始可用)。语法为:
git clone -b <tag_name> --single-branch <repo_url> [<dest_dir>]
例如:
git clone -b 'v1.9.5' --single-branch https://github.com/git/git.git git-1.9.5
好处:Git将只接收对象和(需要)解析指定分支/标记的增量,同时检出完全相同数量的文件!根据源存储库的不同,这将为您节省大量磁盘空间。(此外,这会更快。)
$ git clone
将为您提供整个存储库。
克隆后,您可以使用$git标记-l列出标记,然后签出特定标记:
$ git checkout tags/<tag_name>
更好的是,签出并创建一个分支(否则,您将在以标记的修订号命名的分支上):
$ git checkout tags/<tag_name> -b <branch_name>
try:
git clone -b <name_of_the_tag> <repository_url> <destination>
我是通过github API完成的:
curl -H "Authorization: token %(access_token)s" -sL -o /tmp/repo.tar.gz "http://api.github.com/repos/%(organisation)s/%(repo)s/tarball/%(tag)s" ;\
tar xfz /tmp/repo.tar.gz -C /tmp/repo --strip-components=1 ; \