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

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

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

65722 次浏览

标记主要用于将来引用项目的特定版本,方法是标记提交。当然,您总是可以使用分支,但是如果您对版本进行了大量更改,您最终将得到大量未使用或很少使用的分支。

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

编辑: 给你是一种很好的使用 git 的方法,我在所有项目中都使用它。

使用标记记录历史中的重要提交。“在那个下雨的星期四,当构建服务器崩溃时,我们使用的正是这个版本的提交”。如果使用分支而不是标记,则永远不会知道所使用的确切提交。您只知道“我们在这个分支的某个地方发布了版本1.1.0”,除非您手动写下该提交的确切散列,这就是为什么您首先使用标记:)

我倾向于使用包含两个标记 还有分支的工作流。标记可以用来标记已发布的代码或显著的开发构建。分支有助于跟踪与特定版本相关的所有更改。

这里有一篇关于这种工作流的好文章: http://nvie.com/posts/a-successful-git-branching-model/

标签是 永恒不变

尽管您可以创建一个名为“1.0.0”的分支,但您或任何拥有提交权限的人也可以简单地(有意或无意地)推到该分支并更改1.0.0的含义。

一旦你创建了一个标签,你就不能使用标签了——就是这样; 标签1.0.0就是这个意思,不能改变 *

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

您可以删除并重新创建一个标记,从而改变一个标记,但这肯定不是偶然的。

分支和标记是一回事(指向提交的指针,也就是。除了分支自动移动到下一个提交,而标记在同一个提交上永久保留 1

在进行发布时,您通常希望标记用于构建发布的代码的“快照”,并且希望在继续进化代码时仍然保持这种标记,因此可以使用标记。

如果您尝试使用一个分支,那么它可能会无意中转移到另一个提交,这个版本就是从这个提交构建的。


当然,除非你删除标签。

注意: 我知道这是一个老问题,但我觉得分支和标签之间的相似性(以及一个关键的区别)在其他答案中没有得到充实,因为它可能已经很清楚了。

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

简短的回答: 使用发布版本的标签

详细的回答: 我认为使用标签进行版本控制比使用分支更好。如果您需要更新版本,只需从标记的提交中分支出来,并且一旦您完成了该分支的工作(最有可能是修复分支) ,就可以在新分支的前端创建一个带有新版本的新标记。然后,将这个分支合并回 master/development,因为您确实不应该更改发布版本,除非它是一个修补程序,可能应该合并回您的源代码。然后删除该分支,因为不再需要它了。如果您需要对新版本应用另一个修复程序,请重复相同的步骤。

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