跳至主要内容

管理 codespace 内对其他存储库的访问权限

您可以管理 GitHub Codespaces 可以访问的仓库。

概览

默认情况下,您的代码空间会分配一个作用域为 read 权限或 readwrite 权限的令牌,该令牌针对创建代码空间的仓库。此令牌的作用域在以下情况下会自动更改。

  • 如果您为仅拥有只读访问权限的仓库创建代码空间,然后在代码空间中提交或推送新分支,GitHub Codespaces 会自动将您的代码空间链接到该仓库的新分叉或已有的分叉,并将令牌更新为对该分叉拥有 readwrite 权限。有关更多信息,请参阅 在代码空间中使用源代码控制
  • 如果您从模板创建代码空间,然后将代码空间发布到新仓库,GitHub Codespaces 会将令牌更新为对新仓库拥有 readwrite 权限。有关更多信息,请参阅 从模板创建代码空间

更多信息,请参阅 GitHub Codespaces 中的安全性

如果您的项目需要对其他仓库的额外权限,您可以在 devcontainer.json 文件中进行配置,具体请参见本文后面的 设置额外的仓库权限。当在 devcontainer.json 文件中列出权限时,您将在创建该仓库的代码空间时被提示审查并授权这些额外权限。授权后,GitHub Codespaces 将记住您的选择,除非 devcontainer.json 中的权限发生更改,否则不会再次提示授权。

注意

devcontainer.json 文件中更新权限不会改变已有代码空间的权限。如果您需要在现有代码空间中获取额外权限,请参阅 仓库身份验证故障排除

使用自定义权限创建代码空间

要使用自定义权限创建代码空间,您必须使用以下任意一种方式

设置额外的仓库权限

您在 devcontainer.json 文件中配置 GitHub Codespaces 的仓库权限。您添加或更改的任何自定义权限仅会应用于在将更改提交到仓库后创建的新代码空间。如果您在代码空间内部添加或更改权限,这些权限不会应用于当前代码空间,即使您重新构建代码空间也是如此。

  1. 如果您的仓库尚未包含 devcontainer.json 文件,请立即添加。更多信息,请参阅 向仓库添加 dev container 配置

  2. 编辑 devcontainer.json 文件,在 repositories 对象中添加所需的仓库名称和权限

    JSON
    {
      "customizations": {
        "codespaces": {
          "repositories": {
            "my_org/my_repo": {
              "permissions": {
                "issues": "write"
              }
            }
          }
        }
      }
    }
    

    注意

    • 您只能引用与当前所在仓库属于同一个人账户或组织的仓库。
    • 您可以使用通配符 * 为组织中的多个仓库授予权限。例如,要为 my_org 组织中的所有仓库授予权限,请使用 my_org/*。此语法仅对代码空间有效。在任何用于预构建的 devcontainer.json 文件中,必须为每个仓库单独定义权限。更多信息,请参阅 允许预构建访问其他仓库

    您可以为列出的每个仓库授予以下任意数量的权限

    • actions - 读取 / 写入
    • checks - 读取 / 写入
    • contents - 读取 / 写入
    • deployments - 读取 / 写入
    • discussions - 读取 / 写入
    • issues - 读取 / 写入
    • packages - 读取
    • pages - 读取 / 写入
    • pull_requests - 读取 / 写入
    • repository_projects - 读取 / 写入
    • statuses - 读取 / 写入
    • workflows - 写入

    要为组织中的仓库设置权限,必须在 repositories 对象中显式添加该仓库名称。

    {
      "customizations": {
        "codespaces": {
          "repositories": {
            "my_org/my_repo": {
              "permissions": {
                "issues": "write"
              }
            }
          }
        }
      }
    }
    

    要为指定仓库设置所有权限,请在仓库对象中使用 "permissions": "read-all""permissions": "write-all"

    {
      "customizations": {
        "codespaces": {
          "repositories": {
            "my_org/my_repo": {
              "permissions": "write-all"
            }
          }
        }
      }
    }
    

授权请求的权限

如果在 devcontainer.json 文件中定义了额外的仓库权限,您将在为该仓库创建代码空间或预构建配置时被提示审查并可选地授权这些权限。当您为仓库授权权限后,除非该仓库的请求权限集合发生变化,GitHub Codespaces 将不会再次提示您。

Screenshot of the requested permissions page. Two permissions are shown as requested: read permission for metadata and write permission for issues.

您应该仅授权您了解并信任的仓库的权限。如果您不信任请求的权限集合,请点击 Continue without authorizing(继续而不授权)以使用基础权限集创建代码空间。拒绝额外权限可能会影响项目在代码空间中的功能,因为代码空间仅能访问创建它的仓库。

您只能授权您个人账户已经拥有的权限。如果代码空间请求您目前没有访问权限的仓库的权限,请联系该仓库的所有者或管理员获取足够的访问权限,然后再次尝试创建代码空间。

延伸阅读

© . This site is unofficial and not affiliated with GitHub, Inc.