如何防止一个git分支合并到另一个git分支?

如何防止一个git分支合并到另一个git分支?,git,version-control,workflow,bitbucket,githooks,Git,Version Control,Workflow,Bitbucket,Githooks,在通用的(基于git的)开发工作流中,维护一个主分支和一个下一个(或开发)分支,用于测试目的: 特征分支从master开始,并合并到next中进行测试。如果认为是稳定的,可以将特征分支合并到主分支中 master定期合并到next next定期重绕(例如,在发布之后) 下一个分支不应合并到主分支中 如果能够自动防止next合并到master,直接或通过另一个基于next的分支,这将非常有用如何使用git实现这一点? 注意:如中所述,可以使用git钩子在远程存储库上防止这些类型的合并,您可以完

在通用的(基于git的)开发工作流中,维护一个
分支和一个
下一个
(或
开发
)分支,用于测试目的:

  • 特征分支从
    master
    开始,并合并到
    next
    中进行测试。如果认为是稳定的,可以将特征分支合并到
    主分支中
  • master
    定期合并到
    next
  • next
    定期重绕(例如,在发布之后)
  • 下一个分支不应合并到主分支中
如果能够自动防止
next
合并到
master
,直接或通过另一个基于
next
的分支,这将非常有用如何使用git实现这一点?


注意:如中所述,可以使用git钩子在远程存储库上防止这些类型的合并,您可以完全访问这些存储库。然而,像BitBucket或GitBucket这样的服务(大概)是不可能做到这一点的,所以我寻求一种解决方案,它可以与本地存储库一起使用,或者可以与远程存储库一起使用,而远程存储库只有有限的管理访问权限。

当你真的想使用GitHub/BitBucket时,就不要给任何人对你的存储库的写访问权限。只接受拉取请求。这样,您就可以检查合并它所包含的请求,如果您看到不想要的东西,就可以拒绝它们


一种自动化的方法是创建一个本地repo,添加一个执行检查的钩子,然后将拉请求拉入新的本地“验证”repo(这不应该是您的正常工作repo,所以您可以随时丢弃它)。

为什么不在本地安装钩子呢?链接中的钩子是一个更新钩子,这只适用于远程存储库。也许这很简单,但如何将其转化为本地钩子呢?这似乎是一个奇妙的问题,我也需要一个答案。它并没有得到更多的关注和基于钩子的答案,这是非同寻常且相当令人不安的,因为它似乎对安全使用此工作流至关重要。我希望这样做,因为我的团队花费了大量的时间和烦恼,就像OP描述的那样(使用“via Other branch”变体)。