使用Git时,建议使用master分支进行主动开发吗?


32

首先,在某些背景下,我们正在将所有项目团队转移到使用git的过程中,并且正在制定有关如何组织存储库的准则,以便还可以监视某些分支机构的持续集成和管理。自动部署到测试服务器。当前,正在开发两种模型:

  1. nvie.com文章对成功分支产生了重大影响,其中master分支代表最稳定的代码,最新分支用于前沿代码,而集成分支则可以进行质量检查。

  2. 替代模型,其中master分支表示最前沿的开发代码,集成分支用于代码的质量保证测试,以及生产分支,用于生产稳定的代码,可以部署。

在这一点上,有关master分支代表什么的部分语义上的问题,但是在master分支上进行主动开发实际上是一种好习惯还是不是那么重要?


1
我喜欢Scott Chacon用于开发GitHub的worfklow
user16764 2012年

1
如前所述,在我看来,这似乎不是语义问题,而是任何组织都将发展自己的流程,并且在某些方面,名称需要反映您的工作流程。一般而言,关键似乎在于您在某处定义了一些内容,例如“ HEAD的源代码始终反映生产就绪状态”。您选择的调用不太重要,但是git-flow和GitHub工作流都侧重于分离和控制何时推送到生产就绪的“ thingy”
Murph 2012年

@Murph-是的,但是由于我们是从头开始做的,所以我认为最好还是或多或少地遵循共同的惯例,以免被雇用的新开发人员由于不寻常的内部实践而没有陡峭的学习曲线。
rjzii 2012年

然后,您已经回答了自己的问题(-:坦白地说,即使您提一个问题,您也处于领先地位...
Murph 2012年

Answers:


33

master分支唯一真正的定义功能是某些操作的默认设置。同样,分支名称仅在特定存储库中具有含义。例如,我master可能指向您development。另外,master甚至不需要分支,因此,如果对应该分支哪个有任何疑问,我的建议通常是将其完全排除在外。

但是,我认为,最好的方法是将其视为默认方法。开发人员阅读的大多数在线教程都将假定这一点。因此,拥有master最常被推送到的分支很有意义。某些人认为它是原始副本,除非经过最严格的审查,否则开发人员无法接触到原始副本,但是以这种方式使用它会删除git提供的许多有用的默认值。如果您想要那种原始分支,我会将其放在一个完全独立的存储库中,只有某些人可以写。


7
+1。并且因为“生产就绪”代码是重要的代码,所以它也应该存在于一个分支中,该分支的名称强调了这一重要性。作为默认分支名称的“ master”肯定不会满足该请求,因为出于任何意图,它也在所有其他存储库中使用。
Bananeweizen

4
+1。这是现实生活中的答案。为了强调这一点:团队中没有人定义“ master”分支,而git系统没有。对于重要的事情,请坚持团队中某人已定义的分支。
特拉维斯·威尔逊

1
完全同意。虽然我非常喜欢git流模型(nvie.com/posts/a-successful-git-branching-model),但唯一令我困扰的是master严格保留用于发布,这是违反直觉的。
巴基

12

不,这是不明智的,即使是在开始进行质量检查之前一开始也是如此。作为最佳实践,开发模式应始终保持一致。您的master分支应该开始为空,您应该将开发分支分支为空并开始添加文件,合并到您的集成分支中,然后再合并到您的master中。

尽管在开发过程中没有人会关心master分支没有建立,但是它很早就养成了不良习惯。母版应该始终进行构建,对于主要功能版本,存档主要构建的分支也并不是一个坏主意,以便在必要时可以返回稳定的发布点。


3
通过标签进行版本跟踪不是更好吗?
Adonis K. Kakoulidis

1
@AdonisK .:我看不到您的问题的相关性。
乔尔·埃瑟顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.