Если включить проверку GPG, GitHub Codespaces автоматически подписывает фиксации в пространствах кода, создаваемых из выбранных репозиториев. Дополнительные сведения см. в разделе Управление проверкой GPG для GitHub Codespaces.
После включения проверки GPG он автоматически вступит в силу в любых новых пространствах кода, создаваемых из соответствующих репозиториев. Чтобы проверка GPG вступила в силу в существующем активном пространстве кода, необходимо остановить и перезапустить пространство кода. Дополнительные сведения см. в разделе Остановка и запуск пространства кода.
Если GitHub Codespaces не удалось подписать фиксацию, может появиться сообщение gpg failed to sign the data
об ошибке в командной строке или во всплывающем окне Visual Studio Code .
В следующих разделах этой статьи приводятся рекомендации по устранению распространенных причин этой ошибки.
- Если проверка GPG ранее была включена в параметрах GitHub Codespaces, и вы недавно отключили проверку GPG или удалили репозиторий из списка доверенных репозиториев, Git может по-прежнему пытаться подписать фиксации. Дополнительные сведения см. в разделе Об ошибках после отключения проверки GPG.
- Если для пространства кода включена проверка GPG, возможно, вы переопределили конфигурацию Git, необходимую для подписывания фиксаций. Дополнительные сведения см. в разделе Об ошибках, вызванных конфликтующей конфигурацией Git.
- Если проверка GPG отключена для пространства кода и возникает ошибка при попытке фиксации из представления "Управление версиями" в VS Code, это может быть связано с параметрами VS Code. Дополнительные сведения см. в разделе об ошибках в представлении VS Code "Управление версиями".
Ошибки после отключения проверки GPG
При включении проверки GPG GitHub Codespaces подписывает все фиксации, которые вы делаете в пространствах кода по умолчанию. Для этого необходимо задать commit.gpgsign
для параметра конфигурации Git значение true
.
Если вы отключили проверку GPG и работаете в существующем пространстве кода, это значение по-прежнему будет задано true
. Это означает, что GitHub Codespaces попытается подписать фиксации, но не сможет сделать это, так как вы отключили параметр проверки GPG.
Чтобы сохранить регулярные фиксации без знака в пространстве кода, сбросить commit.gpgsign
значение false
по умолчанию, введя следующую команду в терминале.
git config --unset commit.gpgsign
git config --unset commit.gpgsign
Чтобы проверить правильность удаления значения из конфигурации, можно ввести git config --list
. В списке не должно отображаться значение commit.gpgsign
.
Ошибки, вызванные конфликтующей конфигурацией Git
Чтобы автоматически подписать фиксации, GitHub Codespaces задает определенные значения конфигурации Git в пространстве кода. Если переопределить значения, заданные GitHub Codespaces, вы не сможете подписать фиксации.
Вы можете случайно переопределить эти значения, если вы связали GitHub Codespaces с репозиторием dotfiles, который содержит файлы конфигурации Git. Дополнительные сведения об использовании dotfiles с GitHub Codespacesсм. в разделе Персонализация GitHub Codespaces для вашей учетной записи.
Проверка конфликтующей конфигурации
Чтобы подписать фиксации с помощью GPG, GitHub Codespaces автоматически задает следующие значения конфигурации Git на уровне системы.
Параметр конфигурации | Обязательное значение |
---|---|
user.name | Должен соответствовать полному набору имен в профиле GitHub |
credential.helper | Нужно задать значение /.codespaces/bin/gitcredential_github.sh |
gpg.program | Нужно задать значение /.codespaces/bin/gh-gpgsign |
Чтобы убедиться, что эти значения заданы правильно в пространстве кода, можно использовать git config --list --show-origin
команду. Так как GitHub Codespaces задает эту конфигурацию на уровне системы, необходимые параметры конфигурации должны поступать из /usr/local/etc/gitconfig
.
$ git config --list --show-origin
file:/usr/local/etc/gitconfig credential.helper=/.codespaces/bin/gitcredential_github.sh
file:/usr/local/etc/gitconfig user.name=Mona Lisa
file:/usr/local/etc/gitconfig gpg.program=/.codespaces/bin/gh-gpgsign
В дополнение к приведенным выше значениям могут возникнуть ошибки, если точки- файлы, используемые в пространствах кода, содержат любое из следующих значений.
- Значение
user.signingkey
конфигурации Git - Значение
commit.gpgsign
конфигурации Git - Установка вручную
GITHUB_TOKEN
Удаление конфликтующей конфигурации
Если вы хотите сохранить автоматическую проверку групповой политики для GitHub Codespaces включена, необходимо удалить любую конфликтующую конфигурацию из точек, используемых в пространствах кода.
Например, если глобальный .gitconfig
файл на локальном компьютере содержит gpg.program
значение, и этот файл был отправлен в репозиторий dotfiles, связанный с GitHub Codespaces, вы можете удалить gpg.program
из этого файла и задать его на уровне системы на локальном компьютере.
Note
Любые изменения в репозитории dotfiles будут применяться к новым пространствам кода, которые вы создаете, но не к существующим пространствам кода.
-
На локальном компьютере откройте терминал.
-
Чтобы удалить конфликтующее значение из
~/.gitconfig
(Mac/Linux) илиC:\Users\YOUR-USER\.gitconfig
(Windows), используйтеgit config --global --unset
команду.git config --global --unset gpg.program
-
Отправьте изменение в репозиторий dotfiles в GitHub.
-
При необходимости, чтобы сохранить локальную конфигурацию, задайте значение еще раз в файле конфигурации Git, который не отправляется в репозиторий dotfiles.
Например, флаг можно использовать
--system
для установки конфигурации в файлеPATH/etc/gitconfig
уровня системы, гдеPATH
находится каталог, в котором установлен Git в вашей системе.git config --system gpg.program gpg2
Кроме того, если репозиторий dotfiles содержит скрипт установки в распознаваемом файле, например install.sh
, можно использовать $CODESPACES
переменную среды для добавления условной логики, например только gpg.program
если вы не находитесь в пространстве кода. В следующем примере возвращаетсяtrue
, -z "$CODESPACES"
если вы не находитесь в пространстве кода.
if [ -z "$CODESPACES" ]; then git config --global gpg.program gpg2 fi
if [ -z "$CODESPACES" ]; then
git config --global gpg.program gpg2
fi
Ошибки в представлении VS Code "Управление версиями"
Если проверка GPG отключена в параметрах для GitHub Codespaces, или репозиторий, созданный вами из пространства кода, не находится в списке доверенных репозиториев, Git не должен пытаться подписать фиксации. Если при попытке зафиксировать ошибку подписывания из представления "Управление версиями" в VS Code, необходимо проверить параметры VS Code в пространстве кода.
-
В левом нижнем углу окна выберите , а затем нажмите кнопку "Параметры".
-
На вкладке "Пользователь" в строке поиска найдите "gpg".
-
Убедитесь, что параметр "Включить подписывание фиксации с помощью GPG или X.509" не выбран.
Если этот параметр включен, установите флажок, чтобы остановить VS Code при попытке подписать фиксации или включить проверку GPG для репозитория, в который вы работаете, чтобы фиксации могли быть успешно подписаны.
При изменении параметров VS Code необходимо убедиться, что синхронизация параметров включена, если вы хотите предоставить общий доступ к изменениям с другими пространствами кода. Вы должны включить синхронизацию параметров только в пространстве кода, созданном из доверенного репозитория. Дополнительные сведения см. в разделе Персонализация GitHub Codespaces для вашей учетной записи.
Дополнительные материалы
- Сведения о проверке подписи фиксации
git config
в официальной документации по Git