如何在git上限制对master分支的访问


76

我有一个仓库,其中有2个用户组:

  • 管理员
  • HTML / UI开发人员

我不希望将master分支的读/写访问权授予HTML开发人员,因为他们无需进行处理,也不应滥用核心代码。

尽管他们需要在自己的分支机构上工作ui-developers。如何在git上执行此操作?

PS:我正在使用BitBucket

更新:

当我对编码和git非常陌生时,我曾发布过这个问题。经过2年的经验,我现在知道git不允许限制任何特定分支的READ访问。但是,Bitbucket,Gitlab和Github等服务允许您将写入和合并限制施加到分支。

另外,我六个月前转移到Gitlab :)


4
最简单的就是告诉他们您想让他们做什么。
John Zwinck

7
@JohnZwinck宁愿“限制”它,而不是仅仅依靠每个人都按照指示进行操作
Harshit Agrawal

您曾经做到过吗?我需要做的一样
Gotts

嗨不 我无法执行此操作,因为git仍然无法实现
Harshit Agrawal

您无法控制对项目/组成员(在本例中为HTML / UI开发人员)的读取访问权限,但您当然可以对主对象具有写控制权。您可以通过不允许提交并仅允许维护者或维护者/开发者合并请求来保护母版,从而保护母版。这样,每个拥有自己的ui-developers分支的开发人员都需要检查代码,然后在需要时合并到master。
user85

Answers:


126

Git本身不具有此功能,但是许多托管服务提供商具有。这通常称为分支保护。据我所知,没有办法阻止读取访问。

使用BitBucket

BitBucket允许对操作进行大量自定义,以防止受到分支机构的保护。保护分支:

  1. 转到项目中的存储库。

  2. 选择“设置>分支权限”。

  3. 单击添加权限。

  4. 在“分支”字段中,选择“分支名称”,“分支模式”或“分支模型”。

  • 分支名称-按名称选择现有分支。

  • 分支模式-使用分支模式语法指定一个分支以匹配分支名称。

  • 分支模型-选择要限制访问的分支类型。

  1. 选择您要阻止的操作类型。
  • 分支删除-防止分支和标签删除。

  • 重写历史记录-防止在指定分支上重写历史记录-例如通过强制推送或变基。

  • 没有拉取请求的更改-防止将更改直接推到指定分支;仅在请求请求时才允许进行更改。

  • 所有修改-防止推送到指定分支,并限制创建与指定分支或模式匹配的新分支。

  1. 可选:为任何选定的限制添加豁免。将用户或组添加为免税项目意味着它不适用于他们。这不是必需的。不添加任何豁免意味着该限制将适用于所有人。

  2. 单击创建以完成。

资源

使用GitHub

一个存储库可以有多个影响相同分支的受保护分支规则。

受保护的分支仅在使用GitHub Free的公共存储库中可用。

可以将GitHub中受保护的分支配置为要求:

  • 通过合并请求进行推送,并在合并之前进行审核,

  • 其他分支在合并之前通过状态检查,

  • 承诺要签名,

  • 历史是线性的

  • 甚至对管理员也强制执行上述规则,

  • 推送来自特定的人员,团队或应用,

可以单独允许强制推送和删除。

保护分支:

  1. 在GitHub上,导航到存储库的主页。

  2. 在您的存储库名称下,点击设置

  3. 在左侧菜单中,点击分支

  4. 点击“分支保护规则”旁边的添加规则

  5. 在“分支名称模式”下,键入要保护的分支名称或模式(列出并计算了受影响的分支)。

  6. 如果需要,请配置特定的分支规则设置。

  7. 单击创建保存更改

资源

使用GitLab

在GitLab中,保护分支将执行以下操作:

  • 它会阻止除具有“主”权限的用户之外的所有用户创建(如果尚未创建)
  • 它可以防止除具有Master权限的用户以外的其他任何人推送
  • 它可以防止任何人用力推动分支机构
  • 它防止任何人删除分支

保护分支:

  1. 导航到项目的主页。

  2. 在右上角,单击定位轮,然后选择“受保护的分支”。

  3. 从“分支”下拉菜单中,选择要保护的分支,然后单击“保护”。

  4. 完成后,受保护的分支将出现在“已受保护”列表中。

然后,您可以通过选中“开发者可以合并”或“开发者可以推送”来允许具有开发者权限的用户访问某些内容

资源


自您回答以来,GitHub的步骤似乎已更新。您能否按照最新更新来更新您的答案。
Somendra Meena

我对Bitbucket中的“分支模型”感到好奇-似乎与“分支模式”相似,因为它允许您限制所有名为“功能/”,“开发”等的分支。confluence.atlassian.com/bitbucketserver/…–
Noumenon

2

除了@ 1615903的答案外,您还可以保护Azure DevOps中的分支,如下所示:

使用Azure DevOps

在Azure DevOps中,使用安全权限和策略保护分支,允许您执行以下操作:

  • 向特定分支添加或删除用户和组。
  • 为拉取请求声明最少数量的审阅者。
  • 自动包括代码审阅者
  • 自动检查链接的工作项是必需的还是可选的
  • 检查评论解析
  • 强制执行合并策略(不进行快进或挤压)
  • 构建验证

以及文档页面上的更多详细信息

保护分支:

  1. 在项目主页中选择“回购”>“分支”以打开“ 分支”
  2. 在列出所有分支的页面上找到您的分支。
  3. 选择...按钮。然后 从上下文菜单中选择分支策略分支安全
  4. 完成后,选择保存更改以应用新的策略配置。

2

在Git本身中,您可以使用服务器中的“预接收”钩子来保护在分支中写入某些用户。

使用此挂钩,您可以对推送中的每个文件应用限制策略。

在这里您可以找到一个例子。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.