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

wuf*_*foo 108 git branch git-tag

我已经使用git大约一年了,并希望使用标记来标记不同版本的提交.我已经找到了很多关于用于处理标签的命令的信息,但是我想知道的是,如果我可以创建一个新的分支来完成使用标记的原因1.1.0,而不必整理我的想法.新的git命令集?

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

AD7*_*six 140

标签是不可变的.

虽然你可以创建一个名为"1.0.0"的分支 - 你或任何有提交权限的人也可以简单地推送到那个分支(故意或不是)并改变1.0.0的含义.

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

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

* 您可以删除并重新创建标签,从而更改标签,但肯定不是偶然的.


Hak*_*yal 90

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

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

编辑:是一个使用我用于所有项目的git的好方法.

  • 对我来说,nvie方法的美妙之处在于我最初不需要理解它.我可以找到我想要做的部分并输入命令.几次之后,它变得自然而且有几天我像专业人士一样在树枝上跳舞! (2认同)

Jus*_*ᚄᚒᚔ 17

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

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


Bra*_*vic 14

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

在发布时,您通常需要标记构建该发行版的代码的"快照",并且您希望它在您继续演化代码时保持标记,因此您将使用标记.

如果你尝试使用分支,它可能会无意中转移到另一个提交,从而没有构建版本.


1当然,除非您删除标签.

注意:我意识到这是一个古老的问题,但我觉得分支和标签之间的相似性(以及一个关键的区别)并没有像其本来那样清晰地在其他答案中闪现出来.


ral*_*nja 6

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

  • 我认为他的意思是创建一个名为1.1.0的分支而不再使用它,因此它将代表命名版本中的项目. (4认同)

Reg*_*n39 5

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

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

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

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