About content exclusions for Copilot
You can use content exclusions to configure Copilot to ignore certain files. When you exclude content from Copilot:
- Code completion will not be available in the affected files.
- The content in affected files will not inform code completion suggestions in other files.
- The content in affected files will not inform GitHub Copilot Chat's responses.
Who can configure content exclusion
Repository administrators and organization owners can configure content exclusion.
- 리포지토리 관리자는 자신의 리포지토리에 대한 콘텐츠만 제외할 수 있습니다. 이는 해당 특정 리포지토리 내에서 작업하는 Copilot 사용자에게 영향을 줍니다.
- 조직 소유자는 조직을 통해 Copilot 시트가 할당된 사용자의 콘텐츠를 제외할 수 있습니다.
Availability of content exclusions
Tool | Code completion support | Copilot Chat support |
---|---|---|
Visual Studio | ||
Visual Studio Code | ||
JetBrains IDEs | ||
Vim/Neovim | Not applicable | |
Xcode | Not applicable | |
Azure Data Studio | Not applicable | |
The GitHub website | Not applicable |
Limitations of content exclusions
- Visual Studio Code 및 Visual Studio의 Copilot Chat에서는 질문에
@github
채팅 참가자를 사용할 때 콘텐츠 제외가 적용되지 않습니다. - 제외되지 않은 파일에서 IDE가 정보를 제공하는 경우 에서 제외된 파일의 의미론적 정보를 사용할 수 있습니다. 이러한 콘텐츠의 예로는 코드에 사용되는 기호에 대한 형식 정보와 커서 올리기 정의가 포함됩니다.
Data sent to GitHub
After you configure content exclusion, the client (for example, the Copilot extension for VS Code) sends the current repository URL to the GitHub server so that the server can return the correct policy to the client. These URLs are not logged anywhere.
Configuring content exclusions for your repository
You can use your repository settings to specify content in your repository that GitHub Copilot should ignore.
-
GitHub에서 리포지토리의 기본 페이지로 이동합니다.
-
리포지토리 이름 아래에서 Settings(설정)를 클릭합니다. "설정" 탭이 표시되지 않으면 드롭다운 메뉴를 선택한 다음 설정을 클릭합니다.
-
In the "Code & automation" section of the side bar, click Copilot.
If your repository inherits any exclusions from its parent organization, you'll see a gray box at the top of the page containing details of these exclusions. You cannot edit these settings.
-
In the box following "Paths to exclude in this repository," enter the paths to files from which Copilot should be excluded.
Use the format:
- "/PATH/TO/DIRECTORY/OR/FILE"
, with each path on a separate line. You can add comments by starting a line with#
.Tip
fnmatch 패턴 일치 표기법을 사용하여 파일 경로를 지정할 수 있습니다. 패턴은 대/소문자를 구분하지 않습니다. ruby-doc.org 설명서의 "파일"을 참조하세요.
Example of paths specified in the repository settings
# 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/**"
- "/src/some-dir/kernel.rs"
Ignore the /src/some-dir/kernel.rs
file in this repository.
- "secrets.json"
Ignore files called secrets.json
anywhere in this repository.
- "secret*"
Ignore all files whose names begin with secret
anywhere in this repository.
- "*.cfg"
Ignore files whose names end with .cfg
anywhere in this repository.
- "/scripts/**"
Ignore all files in or below the /scripts
directory of this repository.
# 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/**"
Configuring content exclusions for your organization
You can use your organization settings to specify files that GitHub Copilot should ignore. The files can be within a Git repository or anywhere on the file system that is not under Git control.
-
GitHub의 오른쪽 위 모서리에서 프로필 사진을 선택하고 조직을 클릭합니다.
-
조직 옆에 있는 설정을 클릭합니다.
-
In the left sidebar, click Copilot then click Content exclusion.
-
In the box following "Repositories and paths to exclude," enter the details of files from which Copilot should be excluded.
To exclude files located anywhere (within a Git repository or elsewhere), enter
"*":
followed by the path to the file, or files, you want to exclude. If you want to specify multiple file path patterns, list each pattern on a separate line.To exclude files in a Git repository from Copilot, enter a reference to the repository on one line, followed by paths to locations within the repository, with each path on a separate line. Use the following format, replacing
REPOSITORY-REFERENCE
with a reference to the repository that contains the files you'd like to exclude:REPOSITORY-REFERENCE: - "/PATH/TO/DIRECTORY/OR/FILE" - "/PATH/TO/DIRECTORY/OR/FILE" - ...
Repositories can be referenced using various protocols. You can use any of the following syntaxes for
REPOSITORY-REFERENCE
and Copilot will match them regardless of how the repository was cloned locally: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/
The
user@
and:port
parts of theREPOSITORY-REFERENCE
are ignored in the calculation of which paths to ignore for a repository.For Azure DevOps, you can use the new (dev.azure.com) or old (visualstudio.com) host format when specifying
REPOSITORY-REFERENCE
, and Copilot will match them regardless of which host was used to clone the repository locally.Tip
fnmatch 패턴 일치 표기법을 사용하여 파일 경로를 지정할 수 있습니다. 패턴은 대/소문자를 구분하지 않습니다. ruby-doc.org 설명서의 "파일"을 참조하세요.
Example of repositories and paths in organization settings
# 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: git@github.com:*/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: git@gitlab.com: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/**"
"*":
- "**/.env"
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"]
octo-repo:
In the octo-repo
repository in this organization:
- "/src/some-dir/kernel.rs"
Ignore the /src/some-dir/kernel.rs
file.
https://github.com/primer/react.git:
In the primer/react
repository on GitHub:
- "secrets.json"
Ignore files called secrets.json
anywhere in this repository.
- "/src/**/temp.rb"
Ignore files called temp.rb
in or below the /src
directory.
git@github.com:*/copilot:
In the copilot
repository of any GitHub organization:
- "/__tests__/**"
Ignore any files in or below the /__tests__
directory.
- "/scripts/*"
Ignore any files in the /scripts
directory.
git@gitlab.com:gitlab-org/gitlab-runner.git:
In the gitlab-org/gitlab-runner
repository on GitLab:
- "/main_test.go"
Ignore the /main_test.go
file.
- "{server,session}*"
Ignore any files with names beginning with server
or session
anywhere in this repository.
- "*.m[dk]"
Ignore any files with names ending with .md
or .mk
anywhere in this repository.
- "**/package?/*"
Ignore files directly within directories such as packages
or packaged
anywhere in this repository.
- "**/security/**"
Ignore files in or below any security
directories, anywhere in this repository.
# 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:
git@github.com:*/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:
git@gitlab.com: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/**"
Testing changes to content exclusions
You can use your IDE to confirm that your changes to content exclusions are working as expected.
Propagate content exclusion changes to your IDE
After you add or change content exclusions, it can take up to 30 minutes to take effect in IDEs where the settings are already loaded. If you don't want to wait, you can manually reload the content exclusion settings using the following instructions.
- For JetBrains IDEs and Visual Studio, reload the content exclusion settings by closing and reopening the application.
- For Visual Studio Code, use the following steps to reload the content exclusion settings:
- Access the Command Palette. For example, by pressing Shift+Command+P (Mac) / Ctrl+Shift+P (Windows/Linux).
- Type:
reload
. - Select Developer: Reload Window.
- For Vim/Neovim, content exclusions are automatically fetched from GitHub each time you open a file.
Test your content exclusions
There are a few different ways to test your content exclusions, depending on which IDE you're using.
- Open a file that you expect to be affected by your content exclusions.
- Use one or more of the following techniques to test if content is being excluded:
- In JetBrains IDEs, Visual Studio, and Visual Studio Code, check the Copilot icon in the status bar. If a Copilot content exclusion applies to the file, the Copilot icon will have a diagonal line through it. Hover over the icon to see whether an organization or the parent repository disabled Copilot for the file.
- In Vim/Neovim, begin typing in the file. If GitHub Copilot no longer provides inline suggestions as you type, the file is excluded.
- You can also test content exclusions in Copilot Chat. Open the Copilot Chat window, and ask Copilot Chat a question about the excluded file. If your content is excluded successfully, Copilot will be unable to answer your question, and will explain that some files were excluded from the conversation due to content exclusion rules.
Further reading
- "Reviewing changes to content exclusions for GitHub Copilot"
- Configuring content exclusion for Visual Studio in the Microsoft Learn documentation