我有一个问题,我在分支中开发我的应用程序,然后当我完成后,我将该分支合并到我的主人。我从master创建了一个标签。
在生产环境中,我在我的工作区中有我的应用程序git存储库。 当我发布新版本时,我可以直接进入该目录,查看我创建的标签吗?
ps,我认为这种方式可行,但以下让我感到困惑。
$ git branch
* (no branch)
master
我无法找到我在生产环境中使用的标签,有没有办法显示我正在使用哪个标签?
答案 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 -s
或git 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.01
,git describe --abbrev=0
将导致:
v1.01
答案 2 :(得分:0)
是的,这是打算如何使用它。一定要推/拉标签,因为它们不是默认的。