我有一个问题,我在一个分支中开发我的应用程序,然后当我完成后,我将该分支合并到我的master中。我从master创建了一个标签。
在生产环境中,我的工作区中有我的应用程序git存储库。当我发布新版本时,我可以直接进入那个目录,签出我创建的标签吗?
ps,我认为这种方式是可行的,但以下内容让我感到困惑。
$ git branch
* (no branch)
master
我找不到我在生产环境中使用的标签,有什么方法可以显示我使用的标签吗?
在生产环境中,我的工作区中有我的应用程序git存储库。当我发布新版本时,我可以直接进入该目录,签出我创建的标签吗
是和否
Git假设您希望在当前签出的版本基础上进行新的工作。标签是不可变的(不可更改的),所以您不能对标签进行新的工作。因此,当你进行时会发生什么
$ git checkout <tag>
Git从<tag>
开始检查所述标记的状态,并为您创建匿名分支(在Git文档中称为"分离的HEAD"),在那里您可以创建新的工作。
这就是您在git分支输出中看到(no branch)
的原因:
$ git branch
* (no branch)
master
IMVHO在"Git概念简化"一节"分离的HEAD等等"中很好地解释了"分离的HEAD"的概念(用图表),其中详细解释了git checkout v1.0
操作。
我找不到我在生产环境中使用的标签,有没有办法显示我正在使用的标签
如果使用带注释/签名的标记(使用git tag -s
或git tag -a
创建),则可以使用git-descripte;如果使用轻量级标记,则使用git describe --tags
。
例如,你会得到
$ git describe
<tag>
如果你直接在标签上。
您可以使用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
是的,这就是它的使用方式。一定要推/拉标签,因为默认情况下不是这样。