防止在git存储库中的master分支上直接提交并仅接受合并?

ale*_*bie 32 git merge commit

我的git存储库有两个分支,'master'和'dev'.

致力于'dev'的代码在测试之前会经过自动构建过程.然后将传递此代码的代码合并到"主"分支中.

是否可以使用钩子或其他东西来阻止"主"分支上的正常直接提交,并且只接受从"dev"到"master"的合并?

Rya*_*art 9

不是一个直接的答案:考虑使用repos而不是分支.想象一下三个回购:本地,开发和祝福.本地=您自己的回购地点.Dev =您将所有提交推送到的repo以及您的构建过程监视更改的那个.Blessed =只有构建过程可以推送到的内容以及您从中获取的内容.因此,您将提交到本地并将更改推送到开发人员.自动构建会对您推送和成功的提交进行全部测试,将它们推向祝福.然后你(或其他任何人)可以从祝福中接过它们并从那里继续工作.

  • 使用多个repos意味着您可以获得单个项目的多个历史记录. (3认同)
  • @larsmans:不确定我理解你的陈述.所有git repos代表相同的历史.如果你反对有多个回购,你基本上是在反对分布式版本控制. (3认同)

the*_*lem 5

如果你使用 GitHub,他们有一个功能来保护分支。转到存储库的 GitHub 设置,然后分支并查看受保护的分支设置。

您可以选择要保护的分支,以及您希望如何保护每个分支。您可以阻止强制推送,要求从另一个分支合并更改,甚至要求您的自动化测试已经通过。

请参阅https://help.github.com/articles/defining-the-mergeability-of-pull-requests/

Bitbucket 提供了类似的功能。