在GitHub上禁用推送到特定分支

时间:2013-08-29 20:43:20

标签: git github git-push

我在GitHub公司帐户上有一些Git私有存储库,我不希望任何人推送某些特定的分支(如master,develop和beta或模式)。我也尝试定义一些钩子,但我希望这可以在GitHub上完成,而不是在客户端上使用预推钩。

所以简单地解释我的问题,我想:

git push origin develop

由于分支名称而被服务器拒绝( GitHub ),但我不希望通过pre-push hook检查客户端,我真的希望GitHub进行检查并且拒绝它。

此外,如果只允许某些用户这样做,但最初只为每个人禁用它就足够了。

4 个答案:

答案 0 :(得分:26)

好的,经过长时间的聊天,我得到了IRC的回答。因为GitHub不允许每个分支权限都不预先发布取消挂钩,所以我必须处理forks和pull请求,或者在每个dev的机器上添加预推钩。以下是我得到的答案的一部分:

  

分叉存储库。然后开发人员可以使用他们自己的存储库版本,而不必担心提交到错误的分支。然后上游的某个人总是可以合并到应该提交的任何分支中。

     
    

是的,但我们是一家公司,我们不希望我们所有的开发人员都有叉子

  
     

为什么不呢?

     
    

那么他们应该能够将他们的分支推送到一个共同的仓库,以便与其他开发人员在同一个功能上工作。例如。

  
     

阅读https://help.github.com/articles/using-pull-requests。您仍然可以在多个货叉之间发送补丁。这是git构建于

的模型      
    

我知道,但我希望能够以中心方式快速查看任何功能/修补程序的实际工作,...

  
     

简而言之:GitHub不支持每个分支的权限

答案 1 :(得分:7)

我知道这篇文章很老了,但我相信对于那些正在寻找答案的人来说,这可能仍然有用。

嗯,现在可以在GitHub上使用 最近GitHub引入了Protected Branches功能,这使得它成为可能:

  

受保护的分支在存储库管理员选择保护的分支上阻止Git的多个功能。受保护的分支:

     
      
  • 不能强行推送
  •   
  • 无法删除
  •   
  • 在所需状态检查通过
  • 之前,无法将更改合并到其中   
  • 在批准所需审核之前,无法将更改合并到其中
  •   
  • 无法编辑或从网络上传文件
  •   
祝你好运。

答案 2 :(得分:4)

你正在寻找的钩子是pre-receiveupdate - 前者每次推动一次,后者每推一次;但重要的是,这些是服务器方面的钩子。

答案 3 :(得分:0)

好,因此似乎有可能阻止不带拉请求而直接将其推入受保护的分支。但是,由于您可能拥有admin的权利,因此您需要在下面的两个选项中打勾,以使其自己生效:

enter image description here