代码之家  ›  专栏  ›  技术社区  ›  Rudie

Git:每个提交的标签是唯一的吗?

  •  3
  • Rudie  · 技术社区  · 15 年前

    如果一个标记只能使用一次(通过提交唯一),那么我该如何处理标记中的7个提交呢? Version 7.3 “?
    我讨厌Git不做修订号(比如svn:)。

    我想子问题是:
    “控制”版本号的最佳实践是什么(修订前,所以我想保存 major.minor 在每一个承诺中,在每一个分支中(我每小调1个分支)。

    第一个问题有一个事实性的答案(我想)。
    第二个更像是最佳实践探索。

    非常感谢!我从stackoverflow ftw学到了很多git!

    2 回复  |  直到 15 年前
        1
  •  10
  •   kubi    15 年前

    我不知道你的第一个问题是什么,但我可以帮你回答第二个问题。

    只需标记每个版本即可。”1.0版、1.1版、2.0版。标记与分支完全分离,所以您选择如何处理标记并不取决于您选择如何处理分支。

    例如,如果您的回购协议如下所示:

    A--B--C--D--E  <- master
       \
        --C'-D'-E' <- test_branch
    

    可以对分支应用标记 E' 并安全删除 test_branch ,而不会丢失中的代码 e’ . 出于这个原因,人们为历史版本维护git分支是很少见的。用版本号标记发行版,然后随意删除不再需要的任何分支。

    fwiw,我也使用这种技术来将分支保持在最低限度。如果我沿着一条死胡同的开发路径走到一个新的分支上,我可以标记该分支(以防万一),然后删除该分支。如果我再次需要那个代码,我可以从标签中找到它。


    编辑回复:您的评论。

    正是我的观点:“一个标记引用一个提交”?那有点糟糕,不是吗?

    我觉得一点也不烂。如果要将引用保留为时间点,则使用标记;如果要保留对变更集集集的引用,则使用分支。

    @VONC提到git describe是对的。这就是我用来在所有代码中插入版本号的方法。任何释放给公众的东西 总是 拿个标签,所以 git describe 返回类似“v1.0”的值。内部测试版本将被标记为“v1.0-10-abcd1234”,这表示我在 V1.0 标记并给出哈希,这样我就可以轻松地直接访问提交。

        2
  •  4
  •   Community CDub    8 年前

    标签是 主要地 保留给 application versioning number policy 不是内部和技术编号(即使 kubi 正确地指出,在评论中,您可以将它们用于任何目的)。
    Annotated tags 尤其是 fit for publication (“推”)。

    有一些方法可以 simulate a technical revision number in Git 但请记住,它的分布式方面将阻止使用简单的“修订计数器”。

    一般来说, git describe is the usual way 在提交中引用一些有意义的信息。
    另请参见 "How to programmatically determine whether the Git checkout is a tag and if so, what is the tag name" .