为什么我应该使用标签与发布/测试版分支进行版本控制?

时间:2012-03-21 17:48:14

标签: git branch git-tag

我已经使用git大约一年了,并希望使用标记来标记不同版本的提交。我已经找到了很多关于用于处理标签的命令的信息,但我想知道的是,如果我可以创建一个名为1.1.0的新分支而不必使用云,那么为什么要使用标记呢?我有一套全新的git命令吗?

标记而不是分支必须有很多好的理由,但我想知道这些优点是什么。

6 个答案:

答案 0 :(得分:131)

标签不可变

您可以创建名为" 1.0.0"的分支。 - 您或任何拥有提交权限的人也可以简单地推送到该分支(有意或无意)并更改1.0.0的含义。

一旦你创建了一个标签,你就不能用标签做到这一点 - 那就是它;标签1.0.0正好意味着并且无法更改 *

这是标签和分支之间的主要实际区别

* 您可以删除并重新创建标记,从而更改标记,但肯定不会意外。

答案 1 :(得分:84)

标签主要用于将来通过标记提交来引用项目的特定版本。当然,您总是可以使用分支,但如果您经常更改版本,最终将会有大量未使用或很少使用的分支。

实际上,标签是没有分支的分支,只是添加了一种方法来引用项目的特定版本以降低复杂性。

编辑:Here是一种使用我用于所有项目的git的好方法。

答案 2 :(得分:16)

我倾向于使用包含标签分支的工作流程。标签适用于标记已发布的代码或显着的开发构建。分支机构有助于跟踪与特定版本相关的所有更改。

以下是关于此类工作流程的精彩文章:http://nvie.com/posts/a-successful-git-branching-model/

答案 3 :(得分:12)

分支和标记是相同的东西(指向提交的指针,又名。"ref"),除了分支自动移动到下一次提交,而标记在同一次提交中永远保持 1

在发布时,您通常希望标记构建该发行版的代码的“快照”,并且您希望它在您继续发展代码时保持标记,因此您可以使用标签。

如果你尝试使用分支,它可能会无意中转移到另一个提交,从该提交构建。

1 当然,除非您删除标记。

注意:我意识到这是一个老问题,但我觉得分支和标签之间的相似性(以及一个关键的区别)并没有在其他答案中尽可能清晰地显示出来。

答案 4 :(得分:6)

您使用标记来记录历史记录中的重要提交。 “这是我们在构建服务器崩溃的那个下雨的星期四用于此版本的确切提交”。如果您使用分支而不是标记,则永远无法知道您使用的确切提交。你只知道“我们在这个分支上的某个地方发布了1.1.0版本”,除非你手动写下该提交的确切哈希值,这就是你首先使用标签的原因:)

答案 5 :(得分:1)

除了其他答案,这是我的2美分。

简短答案:使用发行版本的标签

详细答案::我相信专门用于发布版本控制的标签比使用分支更好。如果您需要更新版本,只需从标记的提交分支,然后在该分支上完成工作(很可能是修补程序分支),就可以使用新版本在该新分支的开头创建一个新标签。然后,将该分支合并回master / develop,因为您实际上不应该更改发行版本,除非它是一个修补程序,很可能应该合并回您的源代码。然后删除该分支,因为它不再需要。如果您需要对该新版本应用另一个修补程序,请重复相同的步骤。

请参阅以下文章的部分,该部分显示如何将修补程序与作者的Git工作流程-https://hackernoon.com/a-branching-and-releasing-strategy-that-fits-github-flow-be1b6c48eca2

合并