git push 报错 pre-receive hook declined

配图源自 Freepik

今天推送代码到 GitLab 远程 master 分支上,然后提交失败了,提示如下:

 ! [remote rejected] master -> master (pre-receive hook declined)

究其原因,就是用户权限不足,无法 push 代码到 master 分支上。只要将用户角色设置成 Master、Owner 等含有 master 分支操作的权限即可。

但应根据自身实际情况而定,是赋予可修改 master 分支权限,还是交由 Leader 等含有 master 分支处理权限的其他人处理?

关于 GitLab 访问权限

GitLab 访问权限 - Visibility Level

这个是在建立项目时就需要选定的,主要用于决定哪些人可以访问此项目,包含 3 种:

  • Private - 私有,只有属于该项目成员才有看到
  • Internal - 内部,用 GitLab 账号的人都看到
  • Public - 公开,任何人可以看到

开源项目和组设置的是 Internal。

行为权限:

在满足行为权限之前,必须具备访问权限(如果没有访问权限,那就无所谓行为权限了),行为权限是指对该项目进行某些操作,比如提交、创建问题、创建新分支、删除分支、创建标签、删除标签等角色

GitLab 定义了以下几个角色:

GitLab 官方文档关于 Permissions 有一个很详细的说明。

  • Guest - 访客

    可以创建 issue、发表评论,不能读写版本库。

  • Reporter - 报告者

    可以理解为测试员、产品经理等,一般负责提交 issue 等
    可以克隆代码,不能提交,QA、PM 可以赋予这个权限。

  • Developer - 开发者

    可以克隆代码、开发、提交、push,RD 可以赋予这个权限。

  • Master - 主人

    可以创建项目、添加 tag、保护分支、添加项目成员、编辑项目,核心 RD 负责人可以赋予这个权限。

  • Owner - 拥有者

    可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组 Leader 可以赋予这个权限。

  • Maintainer - 维护者

    权限与 Owner 差不多,但无删除项目等权限。

参考

  • GitLab members permissions
  • GitLab 各类型账号的权限
  • GitLab 权限和角色的解释
  • GitLab 用户在组中有五种权限:Guest、Reporter、Developer、Master、Owner

你可能感兴趣的:(git push 报错 pre-receive hook declined)