我试图找出如何下载Git存储库的特定标记 - 它是当前版本背后的一个版本 .
我在git网页上看到了以前版本的标签,对象名称为长十六进制数 .
但根据网站的版本名称是“ Tagged release 1.1.5
” .
我尝试了这样的命令(名称已更改):
git clone http://git.abc.net/git/abc.git my_abc
我确实得到了一些东西 - 一个目录,一堆子目录等 .
如果它是整个存储库,我如何获得我正在寻找的版本?如果没有,我该如何下载该特定版本?
15 回答
将为您提供整个存储库 .
克隆后,您可以使用
$ git tag -l
列出标记,然后签出特定标记:更好的是,结帐并创建一个分支(否则您将在以标记的修订号命名的分支上):
将克隆回购并留下您感兴趣的标记 .
1.815个 git clone 状态的文档 .
为了仅检查给定的部署标签,我使用例如:
如果只对最新代码而不是完整存储库感兴趣,这似乎是从远程存储库检出代码的最快方法 . 通过这种方式,它类似于'svn co'命令 .
我不是git专家,但我认为这应该有效:
要么
第二个变体基于标记 Build 新分支,这样可以避免'detached HEAD' . (git-checkout manual)
每个git repo都包含整个修订历史记录,因此克隆repo可以让您访问最新的提交,以及之前的所有提交,包括您正在寻找的标记 .
您可以使用git archive为给定标签或提交ID下载tar球:
您还可以导出标签的zip存档 .
注意:
您无需指定格式 . 它将由输出文件名选取 .
指定前缀将使代码导出到目录(如果包含尾部斜杠) .
Use the --single-branch switch (从Git 1.7.10开始提供) . 语法是:
例如:
好处:Git将接收对象并且(需要)仅解析指定分支/标记的增量 - 同时检出完全相同数量的文件!根据源存储库,这将节省大量磁盘空间 . (另外,它会更快 . )
首先获取该特定遥控器中的所有标签
or 只需输入即可
然后检查可用的标签
然后使用下面的命令切换到该特定标签
希望这会对你有所帮助!
===================================
我刚刚这样做了首先,我确保我知道标签名称拼写 .
这给了我一个git服务器上的标签列表供我选择 . 原始海报已经知道他的标签的名称,所以这一步并非每个人都需要 . 输出看起来像这样,虽然真实列表更长 .
我选择了我想要的标签并取出了以下内容,仅此而已 .
然后我在我的本地机器上标记了这个,给我的标签命名相同 .
我不想像其他人建议的那样克隆远程存储库,因为我正在开发的项目很大,我想在一个干净的环境中开发 . 我觉得这更接近原始问题“我正在试图弄清楚如何下载A PARTICULAR TAG”而不是建议克隆整个存储库的解决方案 . 我不明白为什么任何人都应该拥有Windows NT和Windows 8.1源代码的副本,如果他们想要查看DOS 0.1源代码(例如) .
我也不想像其他人建议的那样使用CHECKOUT . 我检查了一个分支,不想影响它 . 我的目的是获取我想要的软件,以便我可以挑选一些东西并将其添加到我的开发中 .
可能有一种获取标记本身的方法,而不仅仅是标记的提交的副本 . 我必须自己标记提取的提交 . 编辑:啊,是的,我现在找到了 .
在哪里看到冒号,即remote-name:local-name,这里是标签名称 . 这样运行时不会破坏工作树等 . 它似乎只是将东西从远程复制到本地机器,所以你有自己的副本 .
添加了--dry-run选项可以让你看看命令会做什么,如果你想验证它想要的 . 所以我觉得很简单
是真正的答案 .
=
关于标签的单独注释......当我开始新的东西时,我通常在git init之后标记空的存储库,因为
需要提交,问题出现了“你如何改变包括你的第一次软件改变的变化?”所以当我开始工作时,我会这样做
即在我第一次真正的改变之前创建一个提交然后再使用
如果我想要改变我的所有工作, including the first change .
我检查了git checkout documentation,它揭示了一件有趣的事:
所以我们可以提到标签名称(因为标签只是一个提交的名称),如:
P.S:在Git中,你不能直接更新标签(因为标签只是提交的标签),你需要签出与分支相同的标签,然后提交它,然后创建一个单独的标签 .
如果您的标签可以使用linux
sort
命令进行排序,请使用:例如 . 如果
git tag
返回:git tag | sort -n | tail -1
将输出:git tag | sort -n | tail -2 | head -1
将输出:(因为你要求第二个最新的标签)
要签出标签,首先克隆仓库,然后键入:
..或者你需要的任何标签 .
根据彼得约翰逊的回答,我为自己创造了一个漂亮的小别名:
又名'git checkout最新标签' .
这依赖于GNU版本的sort,它适当地处理像lOranger指出的情况:
如果你在Mac上,
brew install coreutils
然后再调用gsort .尝试:
Checking out Tags
如果要查看标记所指向的文件版本,可以执行git checkout,但这会使您的存储库处于“分离的HEAD”状态,这会产生一些不良副作用:
在“分离的HEAD”状态下,如果您进行更改然后创建提交,则标记将保持不变,但您的新提交将不属于任何分支,并且将无法访问,除非通过确切的提交哈希 . 因此,如果您需要进行更改 - 比如说您正在修复旧版本的错误 - 例如 - 您通常需要创建一个分支:
如果你这样做并进行提交,你的version2分支将与你的v2.0.0标签略有不同,因为它将继续你的新更改,所以要小心 .
我这样做是通过github API:
使用-b选项克隆也有帮助:git clone https://git01.codeplex.com/aspnetwebstack.git -b v2.0
以下帖子使用上面的选项下载asp.net mvc:http://vijayt.com/Post/Setting-up-aspnet-mvc-for-debugging-in-your-system