Git标记问题

dis*_*dia 3 git github git-tag

即使在阅读文档后,我对git标记感到有点困惑.

说我正在改变我的develop分支.

  1. 我应该在进行更改之前创建标记,还是应该在进行更改后添加标记?哪个工作流程更好?

  2. 最初我被要求使用git push --tags,但在运行后git tag我显示了5个标签的列表(release-1,...,release-5),当我尝试运行时,git tag -v release-5我被提示有以下错误,同样适用于其他版本.有任何想法吗?

    error: 575bbe56b0c021c51e2b819763c1ff15cc5d2186: cannot verify a non-tag object of type commit.
    error: could not verify the tag 'release-5'
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果我曾经git pushDevelop分支中推送标签,然后合并到Master分支,我还需要做另一轮git push --tags

  4. 标签与分支有何不同?哪个更好?

Von*_*onC 7

我应该在进行任何更改之前先创建一个标记,但我知道我可以在更改后标记它.哪个工作流程更好?

您没有必要,但如果您想回到确定的位置,它可以提供帮助.

你需要知道两种标签(如上所述git tag):

  • 轻量级标签(提交对象的SHA-1对象名称的引用)
  • 带注释的标签(独立标签对象,包括创建日期,标签名称和电子邮件,标记消息和可选的GnuPG签名): git tag -a myTaggit tag -m "new myTag" myTag两者都创建了带注释的标签.
    git tag myTag仅创建轻量级标记.

带注释的标签用于发布,而轻量级标签用于私有或临时对象标签.

无法验证提交类型的非标记对象.

您只能验证带注释的标签,因为它是一个独立的对象,可以支持可选的gpg签名(这是您尝试使用-v选项验证的签名).
轻量级标记只是提交的快捷方式.

git push --tagsDevelop分公司:

这是一个会影响您的远程 上游仓库的操作.
它将推送所有标签,而不仅仅是在Develop分支中设置的标签.我只推荐
那些重要的东西git push --follow-tags

然后合并到Master分公司,

这是在您的本地仓库中完成的本地操作,与之前刚刚完成的操作无关.git push

我还需要做另一轮git push --tags

这两项行动完全不相关.

标签与分支有何不同?哪个更好?

与SVN相反,标签与分支非常不同并且补充它们:一个不比另一个好.

  • 分支用于隔离开发工作(请参阅" 何时应该分支? ").
  • 标签用于标识历史中的特定点是重要的(例如,用于标记版本).

可以轻松地重命名或删除分支.
(注释)在不影响git repo历史的情况下不能修改标签.