Help us learn about your current experience with the documentation. Take the survey.

项目成员

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

成员是指能够访问您项目的用户和组。成员可以直接添加到项目中,也可以通过组继承访问权限。

每个成员都有一个角色,决定了他们在项目中的操作权限。拥有适当角色的项目成员可以添加用户到项目、从项目中移除用户,以及管理访问请求来控制对项目资源的访问。

成员类型

用户可以直接或间接成为组或项目的成员。 间接成员可以是继承的、共享的或继承共享的。

成员类型 成员过程
直接 用户被直接添加到当前组或项目。
继承 用户是包含当前组或项目的父组的成员。
共享 用户是被邀请到当前组或项目的组的成员。
继承共享 用户是被邀请到当前组或项目的祖先组的组的成员。
间接 继承、共享或继承共享成员的统称。
%%{init: { "fontFamily": "GitLab Sans" }}%%
flowchart RL
  accTitle: 成员类型
  accDescr: 描述成员类型及其继承关系

  subgraph 组 A
    A(直接成员)
    B{{共享成员}}
    subgraph 项目 X
      H(直接成员)
      C{{继承成员}}
      D{{继承共享成员}}
      E{{共享成员}}
    end
    A-->|在项目 X 中的继承成员
         在组 A 中的直接成员|C
  end
  subgraph 组 C
    G(直接成员)
  end
  subgraph 组 B
    F(直接成员)
  end
  F-->|组 B
       被邀请到
       组 A|B
  B-->|在项目 X 中的继承成员
       在组 A 中的间接成员|D
  G-->|组 C 被邀请到项目 X|E

项目成员页面

在上面的示例中:

  • 管理员 是从 demo 组继承的成员。
  • 用户 0 是从 demo 组继承的成员。
  • 用户 1 是从被邀请到此项目的 Acme 组共享的成员。
  • 用户 2 是从被邀请到 demo 组的 Toolbox 组继承共享的成员。
  • 用户 3 是直接添加到此项目的成员。

安全考虑

Git 是一个分布式版本控制系统(DVCS)。 所有处理源代码的人员都拥有完整仓库的本地副本。

在 GitLab 中,每个拥有 Reporter 角色或更高的项目成员都可以克隆仓库来创建本地副本。 用户在获得本地副本后,可以将完整仓库上传到任何地方,包括:

  • 他们控制的另一个项目。
  • 不同的服务器。
  • 外部托管服务。

访问控制无法阻止已获得仓库访问权限的用户有意分享源代码。 所有 Git 管理平台都具有分布式版本控制系统的这一固有特性。

虽然您无法阻止授权用户的有意分享,但可以采取以下措施防止无意分享和信息破坏:

添加用户到项目

将用户添加到项目,使其成为直接成员并获得执行操作的权限。

先决条件:

要将用户添加到项目:

  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。

  2. 选择 管理 > 成员

  3. 选择 邀请成员

  4. 如果该用户:

    • 拥有 GitLab 账户,输入其用户名。
    • 没有 GitLab 账户,输入其电子邮件地址。
  5. 选择一个默认角色自定义角色

  6. 可选。选择一个访问过期日期。 从该日期起,用户将无法再访问该项目。

    如果您选择了访问过期日期,项目成员会在访问权限过期前七天收到邮件通知。

    在角色过期前,Maintainer 拥有完整权限,包括延长自身访问过期日期的能力。

  7. 选择 邀请。 如果您使用以下方式邀请用户:

    • GitLab 用户名,他们会被添加到成员列表中。
    • 电子邮件地址,邀请会发送到其邮箱,并提示他们创建账户。 如果邀请未被接受,GitLab 会在两天、五天和十天后发送提醒邮件。 未接受的邀请会在 90 天后自动删除。

您可以分配的角色

您可以分配的最高角色取决于您对组拥有 Owner 还是 Maintainer 角色。例如,您可以设置的最高角色是:

  • Owner (50),如果您对项目拥有 Owner 角色。
  • Maintainer (40),如果您对项目拥有 Maintainer 角色。

Owner 角色只能为组添加。

查看待提升的用户

如果启用了角色提升的管理员审批,将现有用户提升为计费角色的成员请求需要管理员审批。

要查看待提升的用户:

  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
  2. 选择 管理 > 成员
  3. 选择 角色提升 标签页。

如果未显示 角色提升 标签页,说明项目没有待处理的提升。

更新过期日期和角色

如果用户是:

  • 项目的直接成员,可以在项目上直接更新过期日期角色字段。
  • 继承、共享或继承共享成员,必须在成员所属的组上更新过期日期角色字段。

与组共享项目

与其逐个添加用户,您可以将项目与整个组共享

从另一个项目导入成员

您可以将另一个项目的直接成员导入到您自己的项目中。 导入的项目成员保留与您导入的项目相同的权限。

只导入项目的直接成员。项目的继承或共享成员不会被导入。

先决条件:

  • 您必须至少拥有 Maintainer 角色。

如果导入成员在目标项目中的角色是:

  • Maintainer,那么源项目拥有 Owner 角色的成员会被导入为 Maintainer 角色。
  • Owner,那么源项目拥有 Owner 角色的成员会被导入为 Owner 角色。

要导入项目成员:

  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
  2. 选择 管理 > 成员
  3. 选择 从项目导入
  4. 选择项目。您只能查看您是维护者的项目。
  5. 选择 导入项目成员

如果导入成功,会显示成功消息。 要在成员标签页查看导入的成员,请刷新页面。

从项目移除成员

如果用户是:

  • 项目的直接成员,您可以直接从项目中移除他们。
  • 来自父组的继承成员,您只能从父组本身移除他们。

先决条件:

  • 要移除拥有以下角色的直接成员:
    • Maintainer、Developer、Reporter、Planner 或 Guest 角色,您必须拥有 Maintainer 角色。
    • Owner 角色,您必须拥有 Owner 角色。
  • 可选。将成员从分配给他们的所有问题和合并请求中取消分配。

要从项目移除成员:

  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
  2. 选择 管理 > 成员
  3. 在要移除的项目成员旁边,选择 移除成员
  4. 可选。在确认对话框中,选择同时从此用户的相关问题和合并请求中取消分配复选框。
  5. 为防止私有项目敏感信息泄露,请验证该成员是否未分叉私有仓库或创建 webhook。现有的分叉将继续接收来自上游项目的更改,webhook 也将继续接收更新。您可能还需要配置项目以防止组中的项目在其组外被分叉
  6. 选择 移除成员

确保被移除的用户无法重新邀请自己

拥有 Maintainer 或 Owner 角色的用户可以利用竞争条件,在管理员移除他们后重新加入组或项目。

为避免此问题,GitLab 管理员可以:

  • GitLab Rails 控制台中移除恶意用户会话。
  • 模拟恶意用户以:
    • 从项目中移除用户。
    • 将用户登出 GitLab。
  • 阻止恶意用户账户。
  • 移除恶意用户账户。
  • 更改恶意用户账户的密码。

筛选和排序项目成员

您可以在项目中筛选和排序成员。

显示直接成员

  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
  2. 选择 管理 > 成员
  3. 筛选成员框中,选择 成员类型 = 直接
  4. Enter

显示间接成员

  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
  2. 选择 管理 > 成员
  3. 筛选成员框中,选择 成员类型 = 间接
  4. Enter

在项目中搜索成员

要搜索项目成员:

  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
  2. 选择 管理 > 成员
  3. 在搜索框中,输入成员的姓名、用户名或电子邮件。
  4. Enter

在项目中排序成员

您可以按以下方式对成员进行升序或降序排序:

  • 账户名称
  • 授予访问日期
  • 角色(成员在项目中的角色)
  • 用户创建日期
  • 最后活动日期
  • 最后登录日期

要对成员排序:

  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
  2. 选择 管理 > 成员
  3. 在成员列表顶部,从下拉列表中选择要排序的项目。

请求项目访问权限

GitLab 用户可以请求成为项目成员。

  1. 在左侧边栏,选择 搜索或跳转至 并找到您想成为成员的项目。
  2. 在右上角,选择垂直省略号( ellipsis_v )并选择请求访问

邮件会发送给最近活跃的项目 Maintainer 或 Owner。 最多通知十个项目 Maintainer 或 Owner。 任何项目 Owner 或 Maintainer 都可以批准或拒绝请求。 项目 Maintainer 不能批准 Owner 角色的访问请求。

如果项目没有直接的 Owner 或 Maintainer,通知会发送给项目父组的最近活跃的 Owner。

撤销项目访问请求

您可以在请求被批准前撤销项目访问请求。 要撤销访问请求:

  1. 在左侧边栏,选择 搜索或跳转至 并找到您请求访问的项目。
  2. 在项目名称旁边,选择撤销访问请求

防止用户请求项目访问权限

您可以防止用户请求项目访问权限。

先决条件:

  • 您必须拥有项目的 Owner 角色。
  • 项目必须是公开的。
  1. 在左侧边栏,选择 搜索或跳转至 并找到您的项目。
  2. 选择 设置 > 常规
  3. 展开可见性、项目功能、权限
  4. 项目可见性下,确保用户可以请求访问复选框未被选中。
  5. 选择保存更改

成员身份和可见性权限

根据其成员类型,组或项目的成员被授予不同的可见性级别和组或项目的权限。

下表列出了项目成员的成员身份和可见性权限。

操作 直接项目成员 继承项目成员 直接共享项目成员 继承共享项目成员
生成看板 check-circle check-circle check-circle check-circle
查看父组的问题 1 check-circle check-circle check-circle check-circle
查看父组的标签 check-circle check-circle check-circle check-circle
查看父组的里程碑 check-circle check-circle check-circle check-circle
被共享到其他组 check-circle dotted-circle dotted-circle dotted-circle
被导入到其他项目 check-circle dotted-circle dotted-circle dotted-circle
与其他成员共享项目 check-circle check-circle check-circle check-circle

脚注

  1. 用户只能查看他们有权访问的项目的问题。

下表列出了组成员的成员身份和可见性权限。

操作 直接组成员 继承组成员 直接共享组成员 继承共享组成员
生成看板 check-circle check-circle check-circle check-circle
查看父组的问题 check-circle check-circle check-circle check-circle
查看父组的标签 check-circle check-circle check-circle check-circle
查看父组的里程碑 check-circle check-circle check-circle check-circle

在下面的示例中,用户是:

  • 子组的直接成员。
  • 子子组的继承成员。
  • 子组-2子组-3的间接成员。
  • 子子组-2子子组-3的间接继承成员。
%%{init: { "fontFamily": "GitLab Sans" }}%%
graph TD
  accTitle: 组继承图
  accDescr: 用户继承,通过子组的直接和间接继承
  classDef user stroke:green,color:green;

  root --> subgroup --> subsubgroup
  root-2 --> subgroup-2 --> subsubgroup-2
  root-3 --> subgroup-3 --> subsubgroup-3
  subgroup -. shared .-> subgroup-2 -. shared .-> subgroup-3

  User-. member .- subgroup

  class User user