30

是否可以使用 git bash 设置分支权限?我想对 master 分支有更严格的权限,这样有些人可以使用开发分支并提交到它,并且可能不会自己更改 master 分支。

如果可能的话,我将如何尝试去做呢?

4

4 回答 4

30

Git 没有特定于分支的权限。您可以使整个存储库只对人们只读,或者创建一个私有和一个公共存储库,并且只将开发分支推送到公共,同时仅将主存储库保留在您的私有存储库中。

编辑: 对于特定于分支的权限,您需要像Gitolite这样的服务器端授权层——显然,这需要您管理自己的 Git 服务器。

于 2012-11-06T09:49:42.673 回答
5

可能需要这样做的典型场景是将对官方(或发布)分支的访问限制为团队中的一部分人。一个好的策略可能是拥有两个 repo——一个是访问控制更严格的主 repo,另一个是团队中每个人都可以访问并用于设置工作分支的 repo。并根据需要从工作分支拉到主仓库。当然,您可以调整它以适应您的团队结构和需求。

这尤其适用于 github 等服务。

于 2014-06-12T20:08:16.037 回答
5

bitbucket 支持分支限制。请参阅此处的链接:https ://blog.bitbucket.org/2013/09/16/take-control-with-branch-restrictions/

于 2015-02-21T08:46:39.383 回答
3

如果你的开发团队是一群文明的人,只需要一个友好的提醒,你可以使用pre-receive 服务器端 hook拒绝推送:

#!/bin/bash

# Extract the user email (%ae) from the last commit (author email)
USER_EMAIL=$(git log -1 --format=format:%ae HEAD)

# Looping through all the pushed branches
while read oldrev newrev refname
do
    branch=$(git rev-parse --symbolic --abbrev-ref $refname)
    if [ "master" == "$branch" ] && [ "the_integrator@your_company.com" != $USER_EMAIL ]; then
        echo "Naughty naughty!"
        exit 1 # fail, i.e. reject push
    fi
done

尽管用户可以轻松伪造他们的 git 电子邮件地址,但我仍然会将挂钩文件本身设为只读。

参考:

  1. 如何在服务器端 git hook 中获取推送用户信息?
  2. 编写一个 git post-receive 钩子来处理特定的分支
于 2017-10-11T18:16:15.080 回答