1

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

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

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

$ git branch
* (no branch)
master

我找不到我在生产环境中使用的标签,有什么方法可以显示我正在使用的标签吗?

4

3 回答 3

2

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

是和不是。

Git 假设您希望根据当前签出的版本进行新工作。标签是不可变的(不可更改的),因此您不能对标签进行新的工作。因此,当你这样做时会发生什么

$ git checkout <tag>

是 Git 会检查所述标签的状态并为您创建匿名分支(在 git 文档中称为“分离的 HEAD<tag> ”),从 开始,您可以在其中创建新工作。

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

$ git branch
* (no branch)
  master

“分离的 HEAD”的概念在 IMVHO “简化的 Git 概念”,“分离的 HEAD 和所有这些”部分中得到了很好的解释(带有图表) ,其中git checkout v1.0详细解释了操作。


我找不到我在生产环境中使用的标签,有什么方法可以显示我正在使用的标签吗?

如果您使用带注释/签名的标签(使用or创建),或者使用轻量级标签,则可以使用git-describe 。git tag -sgit tag -agit describe --tags

例如你会得到

$ git describe
<tag>

如果您直接在标签上。

于 2013-09-04T10:43:26.553 回答
1

you can use git describe --abbrev=0 to display the most recent tag from current commit.

So if you have e.g

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

and you git checkout v1.01, git describe --abbrev=0 will result in:

v1.01
于 2013-09-04T10:23:38.623 回答
0

是的,这就是它的用途。一定要推/拉标签,因为它们不是默认的。

于 2013-09-04T10:03:03.057 回答