那么版本的“标签”和新功能的“分支”?

时间:2010-12-04 20:13:02

标签: git version-control mercurial github bitbucket

我对分布式版本控制系统有点新意,所以我正在阅读Mercurial手册,我理解的是标签功能可用于标记版本号,例如标记为v1.0和另一个v1。等等。

至于分支,它们将用于添加新功能而不会打扰其他开发人员,然后在一切正常后将其与默认分支合并。

是吗?

请指教。感谢。

5 个答案:

答案 0 :(得分:9)

听起来你大多都是从git伙伴那里得到答案的,他们几乎都了解Mercurial。

核心区别在于,在git中,分支名称不是变更集的组成部分 - 它只是变更集现在的位置。在mercurial中,Named Branch的名称永远是其中的一部分。这导致那些了解git的人比他们知道的Mercurial说两个不太正确的事情中的一个:

  • 应在每个功能的基础上使用命名分支 - 在Mercurial中使用每个功能的命名分支没有任何问题,但由于这些分支名称永远不会消失hg branches输出可以增长很大。
  • Mercurial中的分支不像git中那样轻量级 - Mercurial中的命名分支不是那么轻量级(它们是永久性的)但这就是它的原因不是功能的标准。 Mercurial中的匿名分支比git的命名分支更轻量级,Mercurial中的Bookmark分支与git分支完全相同。

所有这一切都在Steve Losh的Guide to Branching in Mercurial中得到了很好的阐述,正如OJ最初的回答(我赞成)。

总结:

  • GIT中
    • releases:tags
    • 功能:分支
    • 开发线(稳定等):单独的存储库
  • 水银:
    • releases:tags
    • 功能:书签或匿名分支
    • 开发线(稳定等):命名分支

当然,任何一种工具都可以以任何一种方式使用 - 它更多地是关于规范而不是“正确”。

答案 1 :(得分:5)

答案 2 :(得分:3)

这是一个取决于你观点的问题。在 git 中,分支用于很多目的(即一个是开发)。事实上,git中的所有内容都是分支。并且每个分支中可能有不同的标记

我建议阅读这个gread教程,因为它解释了很多关于分支和发布的内容:

http://nvie.com/posts/a-successful-git-branching-model/

答案 3 :(得分:2)

关于git的两个答案正确地同意你的观点,标签适用于发布,分支适用于新功能,但并不能解释原因。

git标记永久指向给定的提交。这意味着它真的有利于标记里程碑,如发布。

另一方面,分支可以被检出并提交,这意味着分支将提前指向新的提交。这使分支 方式在git中工作;任何时候你提交你想要签出一个适当的分支,以便它会记录你的进度。这包括新功能,如您所说,还包括任何其他工作。

Mercurial的情况大致相似,虽然分支不是那么轻量级,所以你不会像在git中那样频繁地进行分支。并且标签的处理方式略有不同,但仍然适用于标记版本。

答案 4 :(得分:0)

我不是Mercurial用户(我使用Git),但就Git工作流而言,你已经死了。在与主分支合并之前,通常由一个开发人员使用分支来处理他们自己的错误修正/功能。

标签通常用在主分支上,用于标记里程碑,通常是版本。这使您可以轻松地恢复到该状态,而无需使用提交编号(在Git中是十六进制数字的长字符串,不确定Mercurial如何工作)。

加里