去年,我从 Subversion 切换到 Git 作为我的日常 VCS,并且仍在努力掌握“Git-think”的细节。
最近困扰我的一个是“轻量级”与注释与签名标签。对于所有实际用途,注释标签优于轻量级标签似乎已被普遍接受,但我找到的解释为什么会出现这种情况似乎总是归结为“因为最佳实践”或“因为它们不同” . 不幸的是,这些都是非常不令人满意的论点,不知道 为什么 它是最佳实践,也不知道这些差异 与 我的 Git 使用有何关系。
当我第一次切换到 Git 时,轻量级标签似乎是自切片面包以来最好的东西;我可以指向一个提交并说“那是 1.0”。我很难理解一个标签怎么可能需要更多,但我当然不能相信世界上的 Git 专家会任意喜欢带注释的标签!那么所有的喧嚣是什么?
(奖励积分:为什么我需要签署标签?)
编辑
我已经成功地确信带注释的标签是一件好事——知道谁标记了,什么时候标记很重要!作为后续,关于好的标签注释有什么建议吗?两者都gittag -am "tagging 1.0" 1.0尝试总结提交日志,因为上一个标签感觉就像失去了策略。
gittag -am "tagging 1.0" 1.0
带注释标签的最大优点是您知道是谁创建了它。就像提交一样,有时很高兴知道是谁做的。如果您是开发人员并且您看到 v1.7.4 已被标记(宣布准备就绪)并且您不太确定,您与谁交谈?名字在注释标签中的人!(如果你生活在一个不信任的世界中,这也可以防止人们对他们不应该标记的东西进行标记。)如果你是消费者,这个名字就是权威的印记:这是 Junio Hamano 说的这个版本的 git 特此释放。
其他元数据也很有帮助 - 有时很高兴知道该版本何时发布,而不仅仅是最终提交的时间。有时,这条信息甚至可能很有用。也许它有助于解释该特定标签的目的。也许发布候选的标签包含一些状态/待办事项列表。
签署标签很像签署其他任何东西 - 它为偏执狂提供了更高级别的安全性。我们中的大多数人永远不会使用它,但如果您真的想在将该软件安装到您的计算机上之前验证所有内容,您可能需要它。
编辑:
至于在标签注释中写什么,你是对的——说起来并不总是很有用。对于版本号标签,它隐含地理解为它标记了该版本,如果您对其他地方的变更日志感到满意,则无需将其放在那里。在这种情况下,实际上最重要的是标记器和日期。我能想到的唯一另一件事是测试套件的某种认可印章。看看 git.git 的标签:他们都只是说“Git 1.7.3 rc1”;我们真正关心的是Junio Hamano的名字。
然而,对于不太明显命名的标签,消息可能变得更加重要。我可以设想为单个用户/客户端、一些重要的非版本里程碑或(如上所述)带有额外信息的发布候选标记一个特定的特殊用途版本。那么这个消息就更有用了。