【发布时间】:2018-12-06 14:13:17
【问题描述】:
我使用 Git、Maven、Jenkins 和 Nexus 作为我的源代码/构建/发布基础架构。任何人都可以提供使用标签或分支来表示应用程序版本的优缺点吗?
似乎使用标签是一种首选方法,但我读过的文章倾向于在他们的解决方案中使用轻量级标签而不是带注释的标签。我也感觉到标签主要对开发人员有用,作为代码更改的临时“标记”,而不是发布必须的权威标记/时间位置。
我对轻量级标签的理解是它们可以在提交之间被删除或移动。这似乎(对我来说)使使用它们来定义发布中的内容的整个想法无效,而创建的分支是一成不变的(显然它上面的文件可以稍后编辑,但它的创建是不可移动的。)
感谢您提供任何信息/建议。 戴夫
【问题讨论】:
-
我不明白你所说的一成不变的分支是什么意思,git 不会记录你创建分支的时间/地点,它只存储它当前指向的内容。
-
@LasseVågsætherKarlsen re:我对分支的评论,当你创建一个分支时,它有一个特定的提交 ID,并且信息不会改变,所以它本质上是代码库的永久记录具体时间点。当您将其与标签进行比较时,标签与提交相关联,但对于轻量级标签,它们可以稍后移动到另一个提交。
-
该分支信息存储在哪里?这对我来说是个新闻,据我所知,git 对分支的唯一了解是它当前指向哪个提交,当您向其添加更多提交时,这显然会发生变化。
-
创建分支时,它有一个提交 ID,就像对 repo 的任何其他更改一样。之后可以在分支上进行其他更改;不过,我的观点是,分支初始创建的提交 ID 不能/不会更改,这使其非常适合在创建分支时识别代码库。我对使用标签的担忧是标签基本上是指向提交的指针。对于轻量级标签,它们可以从一个提交移到另一个提交,因此我担心使用它们来识别应用程序版本。
-
再一次,我想知道它存储在哪里,因为拥有这些信息会很有用,但我所知道的关于 git 如何工作的一切都告诉我你错了。使用 1 个引用和 1 个引用跟踪分支,这是它当前指向的位置,而不是创建它的位置。是的,标签可以被移动或删除,因为它们不是历史的一部分,它们在历史之外,因此您可以在不影响历史的情况下更改它们。
标签: git