不在Git中使用master分支的原因

Mar*_*ams 35 git version-control branch dvcs

所以,我对git相当新,我在过去几周阅读了一些内容后,我读过一些人说主分支不应该改变而是分支然后合并到.

我很高兴能够与分支机构合作,但是对于不在主分支机构工作的原因感到疑惑?

Kar*_*ldt 55

其他人为不直接进行更改做了很好的案例master,我同意他们的观点.然而,总是提倡像这样的工作流程有时会让人们认识到它是不必要的复杂,所以我想提供一个对应点.

如果你有一个人或一个非常小的团队,并且你的开发是高度线性的,即你很少一次处理多个东西而且每个功能通常在开始下一个之前完成,那么没有什么好处也没有好处.直接工作master.如果需要,可以在任何时候返回并添加分支.我强烈建议您了解功能分支工作流程,但如果您觉得在您的情况下它只是添加额外的步骤而不向您购买任何东西,我保证我不会告诉git警察.

  • 我在这里看到两个截然不同但同样有问题的答案并不常见.就是这种情况.太糟糕的SO不允许接受多个答案. (5认同)

kni*_*ttl 27

我想通常的推理是,主分支应代表代码的"稳定"历史记录.使用分支来试验新功能,实现它们,当它们已经足够成熟时,你可以将它们合并回master.

这样,master中的代码几乎总是可以毫无问题地构建,并且主要可以直接用于发布.

我们以git.git(官方git存储库)为例.有几个分支,最明显的:

所以,master包含很可能在下一个git版本中结束的代码.next包含经过测试的代码,可能会合并到master分支中.pu(建议的更新,iirc)包含相当新的(可能)未经测试的代码.

pu被认为是不稳定的,将被重置并重新设定为junio的喜好.next可能会在发布后或发布周期中重置,但这种情况不太常见.master它是一成不变的,在被推送并公开发布后从未改变过.

你看,这变化会得到合并punextnextmaster如果他们认为值得与不破的东西.

该分支maint用于制作错误修正,这也适用于旧版本的git.maint通常合并到next和/或master.

您可以在http://git.kernel.org/?p=git​​/git.git;a=summary上查看分支机构


Von*_*onC 8

使用像Git或Mercurial这样的DVCS(分布式版本控制系统)需要考虑的一件事是"发布"工作流程(与分支工作流程正交).

当你只有分支机构时,你会问自己它们代表什么样的开发工作.
如果master要表示稳定的代码,比如他的答案中的knittl细节,那么是的,你需要从/ merge分支.master

但是当你可以克隆/推/拉(即发布到不同的repos,它们本身可能有不同的目的)时,那么' master'可以扮演从repo到repo的不同角色.

  • 开发回购可以有许多分支,master通常代表最稳定的代码.
  • 部署仓库只能有master,并且有一些修补程序维护分支用于紧急修复.
  • 本地测试repo只能有一个master分支,从push to push重写,只是为了通过一个钩子来运行一些静态分析代码,该钩子只监视master该测试仓库的所述分支.
  • ...