跳至主要内容

从 GitHub Copilot 中排除内容

您可以阻止 Copilot 访问某些内容。

谁可以使用此功能?

代码库管理员和组织所有者可以管理内容排除设置。“维护”角色的成员可以查看,但不能编辑该代码库的内容排除设置。

订阅了 GitHub Copilot Business 或 GitHub Copilot Enterprise 的组织。

关于 Copilot 的内容排除

您可以使用内容排除来配置 Copilot 以忽略某些文件。当您从 Copilot 中排除内容时

  • 受影响的文件中将无法使用代码补全。
  • 受影响文件中的内容不会为其他文件中的代码补全建议提供信息。
  • 受影响文件中的内容不会为 GitHub Copilot 聊天的回复提供信息。

谁可以配置内容排除

代码库管理员和组织所有者可以配置内容排除。

  • **代码库管理员**可以为其自己的代码库排除内容。这会影响在这些特定代码库中工作的任何 Copilot 用户。
  • **组织所有者**可以为通过其组织分配了 Copilot 许可证的用户排除内容。

内容排除的可用性

工具代码补全支持Copilot 聊天支持
Visual Studio
Visual Studio Code
JetBrains IDE
Vim/Neovim不适用
Xcode不适用
Azure Data Studio不适用
GitHub 网站不适用
GitHub 移动应用不适用

内容排除的限制

如果 IDE 在非排除文件中提供了信息,Copilot 可能会使用来自排除文件的语义信息。此类内容的示例包括用于代码中符号的类型信息和悬停定义。

发送到 GitHub 的数据

配置内容排除后,客户端(例如,VS Code 的 Copilot 扩展)会将当前代码库 URL 发送到 GitHub 服务器,以便服务器可以将正确的策略返回给客户端。这些 URL 不会记录在任何地方。

为您的代码库配置内容排除

您可以使用您的代码库设置来指定 GitHub Copilot 应忽略的代码库中的内容。

  1. 在 GitHub 上,导航到代码库的主页。

  2. 在您的代码库名称下,单击 **设置**。如果您看不到“设置”选项卡,请选择****下拉菜单,然后单击**设置**。

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. 在侧边栏的“代码和自动化”部分,单击** Copilot**。

    如果您的代码库从其父组织继承任何排除项,您会在页面顶部看到一个灰色框,其中包含这些排除项的详细信息。您无法编辑这些设置。

  4. 在“要在此代码库中排除的路径”后的框中,输入应从 Copilot 中排除的文件的路径。

    使用格式:- "/PATH/TO/DIRECTORY/OR/FILE",每行一个路径。您可以通过以#开头来添加注释。

    提示

    您可以使用 fnmatch 模式匹配表示法来指定文件路径。模式不区分大小写。请参阅 ruby-doc.org 文档中的“File”。

代码库设置中指定的路径示例

YAML
- "/src/some-dir/kernel.rs"

忽略此代码库中的/src/some-dir/kernel.rs文件。

- "secrets.json"

忽略此代码库中任何位置名为secrets.json的文件。

- "secret*"

忽略此代码库中任何位置名称以secret开头的所有文件。

- "*.cfg"

忽略此代码库中任何位置名称以.cfg结尾的所有文件。

- "/scripts/**"

忽略此代码库中/scripts目录及其以下所有文件。

# Ignore the `/src/some-dir/kernel.rs` file in this repository.
- "/src/some-dir/kernel.rs"

# Ignore files called `secrets.json` anywhere in this repository.
- "secrets.json"

# Ignore all files whose names begin with `secret` anywhere in this repository.
- "secret*"

# Ignore files whose names end with `.cfg` anywhere in this repository.
- "*.cfg"

# Ignore all files in or below the `/scripts` directory of this repository.
- "/scripts/**"

为您的组织配置内容排除

您可以使用您的组织设置来指定 GitHub Copilot 应忽略的文件。这些文件可以在 Git 代码库中,也可以位于不受 Git 控制的文件系统的任何位置。

  1. 在 GitHub 的右上角,选择您的个人资料照片,然后单击 您的组织.

  2. 在组织旁边,单击**设置**。

  3. 在左侧边栏中,单击** Copilot**,然后单击**内容排除**。

  4. 在“要排除的代码库和路径”后的框中,输入应从 Copilot 中排除的文件的详细信息。

    要排除任何位置(在 Git 代码库中或其他位置)的文件,请输入"*":,后跟要排除的文件或文件的路径。如果要指定多个文件路径模式,请在每一行列出每个模式。

    要从 Copilot 中排除 Git 代码库中的文件,请在一行中输入对代码库的引用,后跟代码库中位置的路径,每个路径占一行。使用以下格式,将REPOSITORY-REFERENCE替换为包含要排除的文件的代码库的引用

    REPOSITORY-REFERENCE:
      - "/PATH/TO/DIRECTORY/OR/FILE"
      - "/PATH/TO/DIRECTORY/OR/FILE"
      - ...
    

    可以使用各种协议引用代码库。您可以对REPOSITORY-REFERENCE使用以下任何语法,Copilot 将匹配它们,而不管代码库是如何在本地克隆的

    http[s]://host.xz[:port]/path/to/repo.git/
    
    git://host.xz[:port]/path/to/repo.git/
    
    [user@]host.xz:path/to/repo.git/
    
    ssh://[user@]host.xz[:port]/path/to/repo.git/
    

    在计算要为代码库忽略哪些路径时,将忽略REPOSITORY-REFERENCE中的user@:port部分。

    对于 Azure DevOps,在指定REPOSITORY-REFERENCE时,您可以使用新的 (dev.azure.com) 或旧的 (visualstudio.com) 主机格式,Copilot 会匹配它们,无论本地克隆存储库时使用了哪个主机。

    提示

    您可以使用 fnmatch 模式匹配表示法来指定文件路径。模式不区分大小写。请参阅 ruby-doc.org 文档中的“File”。

组织设置中的存储库和路径示例

YAML
"*":
  - "**/.env"

忽略所有文件系统根目录(Git 和非 Git)中的所有.env文件。例如,这会排除REPOSITORY-PATH/.env/.env。这也可以在一行中写成

"*": ["**/.env"]

octo-repo:

在此组织的octo-repo存储库中

  - "/src/some-dir/kernel.rs"

忽略/src/some-dir/kernel.rs文件。

https://github.com/primer/react.git:

在 GitHub 上的primer/react存储库中

  - "secrets.json"

忽略此代码库中任何位置名为secrets.json的文件。

  - "/src/**/temp.rb"

忽略/src目录中或其下名为temp.rb的文件。

在任何 GitHub 组织的copilot存储库中

  - "/__tests__/**"

忽略/__tests__目录中或其下的任何文件。

  - "/scripts/*"

忽略/scripts目录中的任何文件。

[email protected]:gitlab-org/gitlab-runner.git:

在 GitLab 上的gitlab-org/gitlab-runner存储库中

  - "/main_test.go"

忽略/main_test.go文件。

  - "{server,session}*"

忽略此存储库中任何名称以serversession开头的文件。

  - "*.m[dk]"

忽略此存储库中任何名称以.md.mk结尾的文件。

  - "**/package?/*"

忽略此存储库中直接位于例如packagespackaged等目录中的文件。

  - "**/security/**"

忽略此存储库中任何security目录中或其下的文件。

# Ignore all `.env` files from all file system roots (Git and non-Git).
# For example, this excludes `REPOSITORY-PATH/.env` and also `/.env`.
# This could also have been written on a single line as:
#
# "*": ["**/.env"]
"*":
  - "**/.env"

# In the `octo-repo` repository in this organization:
octo-repo:
  # Ignore the `/src/some-dir/kernel.rs` file.
  - "/src/some-dir/kernel.rs"

# In the `primer/react` repository on GitHub:
https://github.com/primer/react.git:
  # Ignore files called `secrets.json` anywhere in this repository.
  - "secrets.json"
  # Ignore files called `temp.rb` in or below the `/src` directory.
  - "/src/**/temp.rb"

# In the `copilot` repository of any GitHub organization:
[email protected]:*/copilot:
  # Ignore any files in or below the `/__tests__` directory.
  - "/__tests__/**"
  # Ignore any files in the `/scripts` directory.
  - "/scripts/*"

# In the `gitlab-org/gitlab-runner` repository on GitLab:
[email protected]:gitlab-org/gitlab-runner.git:
  # Ignore the `/main_test.go` file.
  - "/main_test.go"
  # Ignore any files with names beginning with `server` or `session` anywhere in this repository.
  - "{server,session}*"
  # Ignore any files with names ending with `.md` or `.mk` anywhere in this repository.
  - "*.m[dk]"
  # Ignore files directly within directories such as `packages` or `packaged` anywhere in this repository.
  - "**/package?/*"
  # Ignore files in or below any `security` directories, anywhere in this repository.
  - "**/security/**"

测试内容排除更改

您可以使用您的 IDE 来确认您对内容排除的更改是否按预期工作。

将内容排除更改传播到您的 IDE

添加或更改内容排除后,最多可能需要 30 分钟才能在已加载设置的 IDE 中生效。如果您不想等待,您可以按照以下说明手动重新加载内容排除设置。

  • 对于 JetBrains IDE 和 Visual Studio,请通过关闭并重新打开应用程序来重新加载内容排除设置。
  • 对于 Visual Studio Code,请使用以下步骤重新加载内容排除设置
    1. 访问命令面板。例如,按Shift+Command+P(Mac)/Ctrl+Shift+P(Windows/Linux)。
    2. 键入:reload
    3. 选择开发者:重新加载窗口
  • 对于 Vim/Neovim,每次打开文件时都会自动从 GitHub 获取内容排除。

测试您的内容排除

根据您使用的 IDE,有几种不同的方法可以测试您的内容排除。

  1. 打开您预计会受到内容排除影响的文件。
  2. 使用以下一种或多种技术来测试内容是否被排除
    • 在 JetBrains IDE、Visual Studio 和 Visual Studio Code 中,检查状态栏中的 Copilot 图标。如果 Copilot 内容排除适用于该文件,则 Copilot 图标将带有斜线。将鼠标悬停在图标上以查看组织或父存储库是否为该文件禁用了 Copilot。
    • 在 Vim/Neovim 中,开始在文件中键入。如果 GitHub Copilot 在您键入时不再提供内联建议,则该文件已被排除。
    • 您也可以在 Copilot Chat 中测试内容排除。打开 Copilot Chat 窗口,并向 Copilot Chat 提问关于被排除文件的问题。如果您的内容已成功排除,Copilot 将无法回答您的问题,并将解释由于内容排除规则,某些文件已从对话中排除。

进一步阅读