Git标记问题

时间:2014-07-03 05:18:41

标签: 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'
    
  3. 如果我使用git pushDevelop分支中推送标签,然后合并到Master分支,我是否还需要进行另一轮{ {1}}

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

2 个答案:

答案 0 :(得分:6)

  

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

您不必这样做,但如果您想回到确定的位置,它会有所帮助。

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

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

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

     

无法验证commit类型的非标记对象。

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

  git push --tags分支中的

Develop

这是一项会影响远程 upstream repo的操作 它将推送所有标签,而不仅仅是在Develop分支中设置的标签 仅推送重要的I recommend git push --follow-tags

  

然后合并到Master分支

这是在本地回购中完成的本地操作,与之前刚刚完成的git push无关。

  

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

这两项行动完全无关。

  

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

与SVN相反,标签与分支有很大的不同,并对它们进行补充:一个不比另一个好。

  • 分支用于隔离开发工作(请参阅" When should you branch?")。
  • 标签用于将历史记录中的特定点标识为重要(例如,用于标记版本)。

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

答案 1 :(得分:0)

首先,VonC的解释很好。 现在转到您的问题,关于标记的工作流程,

  1. 你必须使用轻量级或带注释的标签标记你的git repo的初始版本(选择是你的),通常我更喜欢带注释的标签。 {P.S:标签的初始版本总是更好。这不是必须的。 }
  2. 然后进行更改,提交并推送它们。再次,你可以简单地使用git tag命令创建一个标签,你必须使用" git push origin --tags "。
  3. 完成后,您的标记就会完成。 现在,如果你可以使用" git diff tag1 tag2 "来检查差异。
  4. 我希望它会对你有所帮助:)。