36

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

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

git push origin develop

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

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

4

4 回答 4

29

好的,经过长时间的交谈,我得到了 IRC 的答复。我将不得不使用分叉和拉取请求,或者在每个开发人员的机器上添加预推送挂钩,因为 GitHub 不允许每个分支权限,也不允许预发布取消挂钩。以下是我得到的部分答案:

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

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

为什么不?

好吧,他们应该能够将他们的分支推送到一个公共 repo 上,以便与其他一些开发人员一起使用相同的功能。

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

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

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

于 2013-08-29T22:45:31.803 回答
11

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

好吧,现在可以在 GitHub 上使用。
最近 GitHub 引入了受保护的分支功能,这使得它成为可能:

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

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

祝你好运。

于 2016-09-20T19:51:18.743 回答
4

您正在寻找的钩子是pre-receive-update前者每次推送运行一次,后者每次推送每个分支运行一次;但重要的是,这些是服务器端的钩子。

于 2013-08-29T20:45:26.543 回答
1

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

在此处输入图像描述

于 2020-11-22T11:53:21.450 回答