我发布项目时可以使用git'tag'吗?

时间:2013-09-04 10:00:45

标签: git web-deployment

我有一个问题,我在分支中开发我的应用程序,然后当我完成后,我将该分支合并到我的主人。我从master创建了一个标签。

在生产环境中,我在我的工作区中有我的应用程序git存储库。 当我发布新版本时,我可以直接进入该目录,查看我创建的标签吗?

ps,我认为这种方式可行,但以下让我感到困惑。

$ git branch
* (no branch)
master

我无法找到我在生产环境中使用的标签,有没有办法显示我正在使用哪个标签?

3 个答案:

答案 0 :(得分:2)

  

在生产环境中,我的工作区中有我的应用程序git存储库。当我发布新版本时,我可以直接进入该目录,签出我创建的标签吗?

是和否。

Git假设您希望根据当前签出的版本执行新工作。标签是不可变的(不可更改的),因此您无法对标签进行新的工作。因此,当你做

时会发生什么
$ git checkout <tag>

是Git检查出所述标记的状态并为您创建匿名分支(在git文档中称为“detached HEAD”),从<tag>开始,然后在可以创造新的作品。

这就是您在git-branch输出中看到(no branch)的原因:

$ git branch
* (no branch)
  master

“分离的HEAD”的概念是IMVHO在“Git concepts simplified”,“分离的HEAD和所有那些”部分中很好地解释了(带图表),其中详细解释了git checkout v1.0操作。 / p>


  

我无法找到我在生产环境中使用的标签,有没有办法显示我正在使用哪个标签

如果您使用带注释/已签名的代码(使用git tag -sgit tag -a创建),则可以使用git-describe;如果您使用的是轻量级代码,则可以使用git describe --tags

例如,你会得到

$ git describe
<tag>

如果您直接使用标签。

答案 1 :(得分:1)

您可以使用git describe --abbrev=0显示当前提交中的最新标记。

所以如果你有例如

tag v1.00
tag v1.01
tag v1.02
tag v2.00

而您git checkout v1.01git describe --abbrev=0将导致:

v1.01

答案 2 :(得分:0)

是的,这是打算如何使用它。一定要推/拉标签,因为它们不是默认的。