如何使用Git克隆特定版本的代码发布?

52

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

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

git commit -m "some final tweaks"

并创建了版本标签:

git tag v1.0.0

并且远程 push 了所有东西。

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

等到我完成这些改进并 commit 并创建一个新的 tagv2.0.0)时,是否可能在Git中克隆Git提供的特定状态的代码库?

如果最新版本是v2.0.0,那么我还可以克隆1.0.x版本吗?

例如,类似于 git clone git@github.com:mygitname/theproject.git#1.0.2 这样的命令可行吗?

2个回答

89

您可以使用--branch标志来完成此操作,它还可以接受一个标签。

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

在大多数情况下,您只需要按照Exprator的答案所述检出标记即可(现已删除)。


2
最好这样做:$ git clone git@github.com:mygitname/theproject.git --branch v1.0.2 - user1986815
@MaxMuster 看起来只是标签名称不同的相同内容。 - jordanm
1
@vdegenne 分支和标签名称不需要以“v”开头。 - jordanm

27

使用 Git 时通常不会克隆特定版本;您会 clone 整个仓库 - 在本地复制每个版本 - 然后再 checkout 特定版本。

默认情况下,克隆时会检出一个特定版本(通常是 master)。您可以使用 -b 选项更改要检出的版本(或者,在克隆完成后直接检出所需版本)。

但在某些情况下,这并不是实用的建议,例如如果您正在使用 npm 从 Git 获取某些内容(因此您没有直接发出 clone 命令)。对于 npm,您可以将提交标识符(分支、标签、提交 SHA 等)作为哈希片段添加到 URL 的末尾。(据我所知,这仅适用于 npm,无法像您提问的方式通过 git clone 实现。)

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

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

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


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接