标签与git中的分支

时间:2012-08-04 09:32:46

标签: git deployment tags branch capistrano

我们有一个在生产和登台服务器上运行的大型rails项目。每次我们部署到登台或生产时创建标签是个好主意(这会自动发生在capistrano上)。或者最好创建名为“devlopment”和“staging”的分支,(master将包含生产状态)?

3 个答案:

答案 0 :(得分:6)

git中的标签非常长寿:它们会在您从远程存储库中提取时自动传播,如果您想要清理它们,则必须在每个副本中手动执行此操作。因此,我宁愿使用分支(可能还有它们的reflog)来标记自动部署,否则我很快就会被埋在很多标签中。

答案 1 :(得分:2)

我们标记每个部署(自动在我们的部署脚本中),以便在需要时快速恢复,但它们也可以作为部署历史记录派上用场。例如:

deployment_stag_20120804
deployment_stag_20120823
deployment_prod_20120715
deployment_prod_20120724

如果要避免大量标记,可以使脚本仅为最后N个部署保留标记。

如果您的部署方法是合并(例如,合并到生产分支中),那么分支会更有意义,git挂钩可能会触发prod服务器上的拉动。

答案 2 :(得分:1)

您可以使用分支进行开发,登台和制作,同时使用标签来识别生产版本。我喜欢git flow处理这些分支的方式,并允许您使用更多分支来开发新功能。作为开发人员,您永远不必将代码提交到主分支,并且很少合并到master中。