我的git存储库有两个分支,'master'和'dev'.
致力于'dev'的代码在测试之前会经过自动构建过程.然后将传递此代码的代码合并到"主"分支中.
是否可以使用钩子或其他东西来阻止"主"分支上的正常直接提交,并且只接受从"dev"到"master"的合并?
不是一个直接的答案:考虑使用repos而不是分支.想象一下三个回购:本地,开发和祝福.本地=您自己的回购地点.Dev =您将所有提交推送到的repo以及您的构建过程监视更改的那个.Blessed =只有构建过程可以推送到的内容以及您从中获取的内容.因此,您将提交到本地并将更改推送到开发人员.自动构建会对您推送和成功的提交进行全部测试,将它们推向祝福.然后你(或其他任何人)可以从祝福中接过它们并从那里继续工作.
如果你使用 GitHub,他们有一个功能来保护分支。转到存储库的 GitHub 设置,然后分支并查看受保护的分支设置。
您可以选择要保护的分支,以及您希望如何保护每个分支。您可以阻止强制推送,要求从另一个分支合并更改,甚至要求您的自动化测试已经通过。
请参阅https://help.github.com/articles/defining-the-mergeability-of-pull-requests/
Bitbucket 提供了类似的功能。