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

Har*_*wal 49 git bitbucket git-branch gitlab

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

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

我不希望我的master分支机构对我的HTML开发人员进行读/写访问,因为他们不需要对其进行操作,也不应该滥用核心代码.

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

PS:我正在使用BitBucket

更新:

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

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

161*_*903 81

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

使用BitBucket

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

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

  2. 选择"设置>分支权限".

  3. 单击添加权限.

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

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

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

    • 分支模型 - 选择分支类型以限制访问.

  5. 选择要阻止的操作类型.

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

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

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

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

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

  7. 单击"创建"完成.

资源

使用GitHub

GitHub中受保护的分支:

  • 不能用力推

  • 无法删除

  • 在所需的状态检查通过之前,不能将更改合并到它们中

保护分支机构:

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

  2. 在存储库名称下,单击"设置".

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

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

  5. 选择保护此分支.

  6. 单击保存更改.

资源

使用GitLab

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

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

保护分支机构:

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

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

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

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

然后,您可以通过选中"开发人员可以合并"或"开发人员可以推送"来允许对具有开发者权限的用户进行一些访问

资源


Mat*_*ijs 7

实际上对于Bitbucket,你可以为Master添加一个分支权限,仅阻止所有内容:

在此输入图像描述

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

在此输入图像描述

我测试过,不可以直接push到Master分支。


Jos*_*lez 6

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

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

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