如何 git 克隆特定版本?

Posted

技术标签:

【中文标题】如何 git 克隆特定版本?【英文标题】:How to git clone a specific release? 【发布时间】:2017-07-21 15:32:38 【问题描述】:

就是这样,我完成了我的应用程序的第一个版本。

我提交了第一个版本的最终状态:

git commit -m "some final tweaks"

并创建了版本控制标签:

git tag v1.0.0

push 一切都远程。

现在,我正在开始开发应用程序的第二个版本,我已经想到了一些改进。

以后,当我做了这些改进和commit 并创建一个新的tag (v2.0.0) 时,是否有可能 git clone git 提供的特定状态一个标签?

如果最后一个版本是 v2.0.0,我还可以克隆版本 1.0.x 吗?

比如git clone git@github.com:mygitname/theproject.git#1.0.2

【问题讨论】:

【参考方案1】:

您可以使用--branch 标志执行此操作,该标志也将接受标签。

$ git clone  git@github.com:mygitname/theproject.git --branch 1.0.2

在大多数情况下,您只需要按照 Exprator 的回答中所述检查标签。

【讨论】:

【参考方案2】:

使用 git 你通常不会克隆一个特定的版本;你 clone 整个 repo - 制作每个版本的本地副本 - 然后 checkout 特定版本。

默认情况下,克隆时会签出特定版本(通常为master)。您可以使用-b 选项更改签出的版本(或者,当然,您可以在克隆完成后签出所需的版本)。

但是在某些情况下,这并不是实际有用的建议,例如,如果您使用 npm 从 git 获取某些内容(因此您不会直接发出 clone 命令)。在npm 的情况下,您可以将提交标识符(分支、标签、提交SHA 等)作为哈希片段添加到URL 的末尾。 (尽管适用于npm 的AFAIK;它不适用于您询问的方式git clone。)

为了完整起见,如果您真的只想克隆一个特定版本(仅将该版本从远程复制到本地计算机),您可以执行类似

git clone --depth 1 -b branch_name <url>

(其中branch_name 是分支或标签的名称)。

【讨论】:

我应该在你上面提到的命令中提到repo URL?谢谢! git clone 语法将所有选项放在 URL 之前(然后可能会跟一个本地目录的路径,在其中进行克隆)。因此,对于此处描述的情况,URL 将放在最后。

以上是关于如何 git 克隆特定版本?的主要内容,如果未能解决你的问题,请参考以下文章

如何克隆特定的 Git 标签

仅从 git 存储库中克隆特定版本

如何从从 git 克隆的项目中删除版本跟踪?

如何将公共 Git 存储库恢复到特定的先前提交?

如何在不首先克隆的情况下“连接”一个 git 存储库?

如何在git中管理版本文件