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

在GitHub上禁用推送到特定分支,git,github,git-push,Git,Github,Git Push,我在GitHub公司帐户上有一些Git私有存储库,我不希望任何人推动某些特定分支(如master、develop和beta或按模式)。我还试图定义一些钩子,但我希望在GitHub上完成,而不是在客户端上使用预推钩子 因此,为了简单地解释我的问题,我想: git push origin develop 由于分支名称而被服务器(即GitHub)拒绝,但我不希望通过预推钩子进行客户端检查,我确实希望GitHub进行检查并拒绝它 另外,如果可以只允许某些用户这样做,但首先为每个人禁用它就足够了。您正在

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

因此,为了简单地解释我的问题,我想:

git push origin develop
由于分支名称而被服务器(即GitHub)拒绝,但我不希望通过预推钩子进行客户端检查,我确实希望GitHub进行检查并拒绝它


另外,如果可以只允许某些用户这样做,但首先为每个人禁用它就足够了。

您正在寻找的挂钩是
预接收
更新
——前者每推一次运行一次,后者每推一个分支运行一次;但重要的是,这些是服务器端的钩子。

好的,经过长时间的聊天,我从IRC得到了答案。我必须处理fork和pull请求,或者在每个开发人员的机器上添加预推钩子,因为GitHub不允许每个分支的权限,也不允许预发布取消钩子。以下是我得到的部分答案:

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

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

为什么不呢

嗯,他们应该能够推动他们的分支在一个共同的回购协议上与其他开发人员在同一功能上合作,例如

通读一遍。您仍然可以在多个分叉之间发送补丁。这就是git构建的模型

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

长话短说:GitHub不支持每个分支的权限


我知道这篇文章已经很老了,但我相信它对你们中一些正在寻找答案的人仍然有帮助

那么,现在在GitHub上就可以了。
最近GitHub引入了这一功能,这使得:

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

  • 不能强行推动
  • 不能删除
  • 在通过所需的状态检查之前,无法将更改合并到其中
  • 在所需的审核获得批准之前,无法将更改合并到it中
  • 无法编辑或从web上载文件

祝你好运。

好的,因此似乎可以防止在没有拉请求的情况下直接推送到受保护的分支。但是,由于您可能拥有
admin
权限,您需要勾选以下两个选项,以便自己查看它的效果:


是的,谢谢,但是我应该在这个钩子上插入什么,我的意思是,有很多插件,我不知道该使用哪一个。还是我读错了?(我想我必须使用update,以防在许多分支上进行推送)脚本通过了正在推送的ref。你可以调用<代码> Git Rev列表-漂亮=格式化< /代码>以获得电子邮件/名称-检查帮助列表的格式。也可以考虑预接收-如果用户试图推到一个分支,他是允许的,而且他也不是同时,你接受允许的还是拒绝的?我想我找不到如何在钩子上为GitHub创建脚本,我会更深入地观察,再次感谢;-)是的,我想我的问题还不够清楚。我的问题确实是针对GitHub.com的,如何添加脚本挂钩,或者选择什么插件来满足我在GitHub上的具体需求。因此,当我转到URL时,我有一个服务钩子列表,我想知道我必须使用哪个钩子来做我想做的事情。我还没有找到这个问题的明确答案。@javadba,看看我自己答案的结尾,到今天为止,在GitHub上不可能对不同的分支拥有不同的权限。谢谢,但保护分支已经存在了一段时间,人们仍然可以推送到它。它们不能强制推送,但它们确实可以推送:-/我刚刚测试了它,当您启用受保护的分支时,您不能再直接推送到此分支,只能通过pull请求。你也可以要求管理员以同样的方式行事。我确实有master和develop保护,直到昨天我仍然可以直接推到它。在我的电脑上时,我会再次检查配置。谢谢如果您是此存储库的管理员,您将能够推送到master,除非您选中master的受保护分支设置中的复选框,该复选框表示也对管理员应用此限制。我可以推送到受保护分支。它只会停止用力推。只有通过添加一些限制要求的审阅或状态检查,才能防止定期推送。Bitbucket现在还具有分支权限