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

时间:2016-08-10 04:41:54

标签: git gitlab bitbucket git-branch

我有一个单独的回购,其中我有2个用户组:

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

我不希望将我的<div class="dotted">Dotted</div> <style> @import url(http://fonts.googleapis.com/css?family=Oswald); div { text-align: center; font: bold 21px 'Oswald',sans-serif; text-shadow: 1px 1px 0 #fff, 2px 2px 0 #999; text-transform: uppercase; } .dotted { padding: 2.25em 1.6875em; background-image: -webkit-repeating-radial-gradient(center center, rgba(0,0,0,.2), rgba(0,0,0,.2) 1px, transparent 1px, transparent 100%); background-image: -moz-repeating-radial-gradient(center center, rgba(0,0,0,.2), rgba(0,0,0,.2) 1px, transparent 1px, transparent 100%); background-image: -ms-repeating-radial-gradient(center center, rgba(0,0,0,.2), rgba(0,0,0,.2) 1px, transparent 1px, transparent 100%); background-image: repeating-radial-gradient(center center, rgba(0,0,0,.2), rgba(0,0,0,.2) 1px, transparent 1px, transparent 100%); -webkit-background-size: 3px 3px; -moz-background-size: 3px 3px; background-size: 3px 3px; } </style> 分支的读/写权限授予我的HTML开发人员,因为他们不需要对其进行处理,也不应该滥用核心代码。

虽然他们需要在自己的分支master上工作。我如何在git上执行此操作?

P.S。:我正在使用BitBucket

更新:

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

此外,我在6个月前转到Gitlab:)

6 个答案:

答案 0 :(得分:57)

Git本身没有这样的功能,但很多托管服务提供商都有。这通常称为分支保护。据我所知,没有办法阻止读访问。

使用BitBucket

BitBucket允许通过分支保护来防止动作的大量自定义。保护分支机构:

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

  2. 选择设置&gt;分支权限。

  3. 点击添加权限。

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

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

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

    • 分支模型 - 选择分支类型以限制对。

    • 的访问
  5. 选择您要阻止的操作类型。

    • 分支删除 - 防止删除分支和标记。

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

    • 没有拉取请求的更改 - 阻止将更改直接推送到指定的分支;只有拉取请求才允许更改。

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

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

  7. 点击“创建完成”。

  8. Source

    使用GitHub

    GitHub中的受保护分支:

    • 不能强行推送

    • 无法删除

    • 在所需的状态检查通过之前,无法将更改合并到其中

    保护分支机构:

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

    2. 在您的存储库名称下,单击“设置”。

    3. 在左侧菜单中,单击“分支”。

    4. 在受保护的分支下,使用下拉菜单选择要标记为受保护的分支。

    5. 选择保护此分支。

    6. 点击保存更改。

    7. Source

      使用GitLab

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

      • 它会阻止除了拥有主权限的用户以外的所有人创建(如果尚未创建)
      • 它可以防止除具有主许可的用户以外的所有人推送
      • 它可以阻止任何人强行推进分支
      • 它可以阻止任何人删除分支

      保护分支机构:

      1. 导航到项目的主页面。

      2. 在右上角,单击设置轮并选择受保护的分支。

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

      4. 完成后,受保护的分支将显示在&#34;已受保护的&#34;列表

      5. 然后,您可以通过检查&#34;开发人员可以合并&#34;来允许对具有开发者权限的用户进行一些访问。或者&#34;开发人员可以推送&#34;

        Source

答案 1 :(得分:2)

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

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

Here,您可以找到一个示例。

答案 2 :(得分:2)

这个帖子很旧,但是今天这里有很多信息实际上是不正确的。受保护的分支不“仅”限于 Github 公共分支。您可以限制对分支的读取访问吗?是的!您可以使用密钥管理(即 ssh 密钥)来限制读取访问。鉴于我们有承包软件开发人员从事不适合我们的项目,我们一直在这样做。基本上,如果您不使用发布的 ssh 密钥进行身份验证,则无法访问(读/写)分支。后来我们变得更聪明,开始要求每个开发人员与我们分享他们的 ssh 密钥,我们现在开发了一个脚本(用于 Bitbucket),在授予访问权限之前检查所有 ssh 密钥。

答案 3 :(得分:1)

除了@1615903's answer之外,您还可以如下保护Azure DevOps中的分支:

使用Azure DevOps

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

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

more detailed information在文档页面上。

要保护分支机构:

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

答案 4 :(得分:1)

其实对于bitbucket,你可以给Master添加一个分支权限,只阻止一切:

enter image description here

然后对于 feature,您确实允许写入功能分支:

enter image description here

我已经测试过了,不能直接推送到Master分支。

答案 5 :(得分:0)

对于 bitbucket,这里是。

首先进入您的存储库设置。

enter image description here

然后分支权限。

Select Branch Permissions

最后,限制你想要的方式。

Set Branch premissions