在Git中实现“浮动标记”的最惯用方法是什么?

时间:2011-11-27 18:47:25

标签: git

我将我的网站保存在Git存储库中。它只是一个小型的个人网站,所以没有花哨的自动化;我将进行一系列更改,然后使用jekyll-s3定期将网站推送到服务器。我想跟踪哪些修订已经上传,哪些没有上传,现在我有一个名为pushed的分支,每次上传到服务器时我都会合并master。 (如果涉及任何其他分支,我会在推送之前将所有内容合并到master,以便只有master合并到pushed。)

这种方法运行得很好,但是当我所关心的只是将“一个提交”标记为“已被推送”时,使用“整个”分支对我来说似乎很奇怪。 (是的,我知道Git中的分支被认为是非常轻量级的。)术语方面,似乎我想每次上传到服务器时“标记”最新的提交 - 除了在Git中,标签应该是一个对一个特定提交的不可变引用。保持一个名为pushed的分支是做我想做的最惯用的方式,还是有更好的方法?

3 个答案:

答案 0 :(得分:3)

Git中的标签有两种形式:“轻量级”和“注释”。轻量级标签非常像分支头,它只是一个指向特定提交的名称,仅此而已。可以直接更改轻量级标记指向的提交ID。

带注释的标记有自己的sha1 id,时间戳,提交者,描述,可选的签名,还指向特定的提交。我认为当你说“应该是一个不可变的引用”时,这就是你所指的那种标记。

答案 1 :(得分:3)

如果我理解正确,您希望在网站上提及您的上次更新,对吗?那么,分支实际上就是他们所做的,但不是你所做的命名。

您可能知道,使用版本控制系统进行开发有两种主要方式:

  • master是开发分支。在这种情况下,稳定版本是某些标签。
  • master是稳定的分支。在这种情况下,您还有其他分支用于开发。如果要将功能添加到master,请将master与您自己的分支合并并进行测试。如果有效,请将结果与master合并,然后将其推送到您的网站。

你所说的实际上是第二种方法,你有一个名为pushed的稳定分支,你可以随时保持稳定(上传,工作,无论你想要什么属性)。

所以,是的,你已经存在的东西,无论更具有惯用性,它们都将master保留为稳定分支而不是其他分支(例如名为pushed)。这是相同的概念。

修改:我所说的是,每当您想要将更改上传到您的网站时,请合并master中的所有内容(或pushed喜欢),然后上传它。这样,master(或pushed)的最后一次提交是网站的最后一次上传。

答案 2 :(得分:1)

您可以使用git tag -f tagName

我不是git专家,但我没有看到你不应该使用标签来做到这一点的原因。分支虽然很轻巧,但标签会保存合并。