我正在尝试如何下载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结账文档,发现了一件有趣的事情:
git checkout-b<new_branch_name><start_point>,其中<start_point>是提交的名称开始新分支的位置;默认为HEAD
因此,我们可以将标记名(因为标记只是提交的名称)称为:
>>git checkout-b 1.0.2_branch 1.0.2稍后,修改一些文件>>git push--标记
P.S:在Git中,你不能直接更新标签(因为标签只是提交的标签),你需要签出与分支相同的标签,然后提交到它,然后创建一个单独的标签。
其他回答
使用--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 checkout tags/20210511 -b 20210511-release
如果可以使用linux sort命令对标记进行排序,请使用以下命令:
git tag | sort -n | tail -1
例如,如果git标记返回:
v1.0.1
v1.0.2
v1.0.5
v1.0.4
gittag|sort-n|tail-1将输出:
v1.0.5
gittag|sort-n|tail-2|head-1将输出:
v1.0.4
(因为您要求第二个最近的标签)
要签出标记,请首先克隆repo,然后键入:
git checkout v1.0.4
..或您需要的任何标签。
我不是git专家,但我认为这应该奏效:
git clone http://git.abc.net/git/abc.git
cd abc
git checkout my_abc
OR
git clone http://git.abc.net/git/abc.git
cd abc
git checkout -b new_branch my_abc
第二个变体基于标记建立一个新的分支,这样可以避免“分离的HEAD”。(git结账手册)
每个git repo都包含整个修订历史,因此克隆repo可以让您访问最新的提交,以及之前的所有内容,包括您要查找的标记。
我经常使用一个
git clone --branch <tag_name> <repo_url>