我正在尝试如何下载Git存储库的特定标签,它比当前版本落后一个版本。

我看到git网页上有一个前一个版本的标记,对象名是长十六进制数。

但根据网站的说法,版本名为“标记版本1.1.5”。

我尝试了这样的命令(名称已更改):

git clone http://git.abc.net/git/abc.git my_abc

我确实得到了一些东西——一个目录,一堆子目录等等。

如果它是整个存储库,我如何获得我正在寻找的版本?如果没有,我如何下载该特定版本?


当前回答

我经常使用一个

git clone  --branch <tag_name> <repo_url>

其他回答

对于仅签出用于部署的给定标记,我使用例如:

git clone -b 'v2.0' --single-branch --depth 1 https://github.com/git/git.git

如果您只对最新的代码感兴趣,而不是对完整的存储库感兴趣,那么这似乎是从远程存储库中检出代码的最快方式。以这种方式,它类似于“svn co”命令。

注意:根据Git手册,默认情况下,传递--depth标志意味着--单个分支。

--深度,深度创建一个浅层克隆,其历史记录被截断为指定的提交次数。这意味着——单个分支,除非——没有给定单个分支来获取所有分支尖端附近的历史记录。如果要浅层克隆子模块,也可以通过浅层子模块。

您可以使用gitarchive下载给定标记或提交id的tar球:

git archive --format=tar --remote=[hostname]:[path to repo] [tag name] > tagged_version.tar

您还可以导出标签的zip存档。

列表标记:查看标签0.0.10.1.0导出标记:gitarchive-o/tmp/my-repo-1.0.zip--prefix=my-repo-0.1.0/0.1.0笔记:您不需要指定格式。它将由输出文件名拾取。指定前缀将使代码导出到目录(如果包含尾随斜杠)。

我不是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 checkout tags/20210511 -b 20210511-release

首先获取特定远程中的所有标记

git fetch <remote> 'refs/tags/*:refs/tags/*'

或者只是简单地键入

git fetch <remote>

然后检查可用标签

git tag -l

然后使用以下命令切换到该特定标签

git checkout tags/<tag_name>

希望这对你有所帮助!