如何下载特定的git存储库标记?

时间:2016-12-31 11:35:25

标签: git git-checkout git-tag

我想要构建一个存储库,但是如果我克隆存储库,那么我得到的源代码就是一个不稳定的程序。他们标记的源的最后一个版本(1.2)是稳定的,但我不确定如何使用git下载它。根据我在搜索答案时所阅读的内容,我可以首先克隆存储库,然后使用checkout切换到标记;

git clone https://github/project/project.git

cd project

git checkout tags/1.2

这导致分离头模式,我不确定是否有问题。然而,我没有得到的是,当我结帐时,它表示它切换到工作树"中的标签。这是否意味着现在如果我使用开发团队所包含的脚本构建它,它将只构建1.2源代码?我这样做了,我得到了一个似乎不稳定的程序。但是我无法说出它是什么版本,因为它没有说(他们会在以后的版本中修复它)。

我是否正确地这样做了?或者我通过结帐使用错误的树吠。我的意思是,理想情况下,我希望能够下载该标记的源代码,而不必克隆整个存储库,但我似乎无法弄清楚如何做到这一点,如果它甚至可能的话。 / p>

2 个答案:

答案 0 :(得分:1)

  

理想情况下,我希望能够下载该标记的源代码   无需克隆整个存储库,但我似乎无法   如果可能的话,弄清楚如何做到这一点。

你可以这样做:

git clone https://github.com/jquery/jquery.git --branch 3.1.1 --depth 1

获取没有其他提交历史记录的特定标记。 --branch参数可以在现代版本的git中使用标记名称和分支名称,如this answer中所述。 --depth 1会生成浅层克隆,无需更多历史记录即可结帐。浅层克隆详细解释为例如here。我使用的示例repo,jquery,足够大,你可以观察到差异。

这将导致分离状态,这就是它的意思。

答案 1 :(得分:0)

据我所知,你做得对。

下载回购将包含所有标记,除非您已配置git不下载标记。

当您签出一个标签(使用git checkout 1.2就足够了)时,您确实最终处于数据头模式。但那应该不是问题。 (运行git checkout master返回HEAD)。

签出标签后,您的工作目录现在应该是项目标记发布时的位置。

此时您可能想要做的是删除所有生成或缓存的文件,并从头开始构建项目。如何执行此操作取决于代码和构建系统。如果项目使用make,则通常应该运行make clean