Если включить проверку GPG, GitHub Codespaces автоматически подписывает фиксации в codespace, создаваемых из выбранных репозиториев. Дополнительные сведения см. в разделе Управление проверкой GPG для GitHub Codespaces.
После включения проверки GPG она автоматически войдет в силу во всех новых пространствах кода, создаваемых из соответствующих репозиториев. Чтобы проверка GPG вступила в силу в существующем активном пространстве кода, необходимо остановить и перезапустить codespace. Дополнительные сведения см. в разделе Остановка и запуск codespace.
Если GitHub Codespaces не удается подписать фиксацию, может появиться следующая ошибка.
$ git commit -m 'Initial commit'
error: gpg failed to sign the data
fatal: failed to write commit object
Эта ошибка может возникнуть, если:
- Вы отключили проверку GPG и пытаетесь выполнить обычную фиксацию без знака в существующем codespace.
- Вы включили проверку GPG, но переопределили конфигурацию Git, необходимую для подписывания фиксаций GitHub Codespaces, например путем связывания GitHub Codespaces с репозиторием файлов точек, содержащим файлы конфигурации Git.
Ошибки после отключения проверки GPG
При включении проверки GPG GitHub Codespaces по умолчанию подписывает все фиксации, выполняемые в codespaces. Для этого задав commit.gpgsign
для параметра конфигурации Git значение true
.
Если вы отключили проверку GPG и работаете в существующем codespace, это значение по-прежнему true
будет иметь значение . Это означает, что GitHub Codespaces попытается подписать фиксации, но не сможет это сделать, так как вы отключили параметр проверки GPG.
Чтобы сохранить регулярные фиксации без знака в codespace, сбросьте commit.gpgsign
значение false
по умолчанию , введя следующую команду в терминале.
git config --unset commit.gpgsign
Чтобы убедиться, что значение было правильно удалено из конфигурации, можно ввести git config --list
. Значение для commit.gpgsign
не должно отображаться в списке.
Ошибки, вызванные конфликтующими конфигурациями
Чтобы автоматически подписывать фиксации, GitHub Codespaces задает определенные значения конфигурации Git в codespace. Если вы переопределите значения, заданные GitHub Codespaces, возможно, вам не удастся подписать фиксации.
Вы можете случайно переопределить эти значения, если вы связали GitHub Codespaces с репозиторием файлов точек, содержащим файлы конфигурации Git. Дополнительные сведения об использовании файлов точек с GitHub Codespaces см. в разделе Персонализация GitHub Codespaces для вашей учетной записи.
Проверка конфликтующей конфигурации
Чтобы подписать фиксации с помощью GPG, GitHub Codespaces автоматически задает следующие значения конфигурации Git на уровне системы.
Параметр конфигурации | Обязательное значение |
---|---|
user.name | Должно соответствовать полному имени, заданному в профиле GitHub |
credential.helper | Нужно задать значение /.codespaces/bin/gitcredential_github.sh |
gpg.program | Нужно задать значение /.codespaces/bin/gh-gpgsign |
Чтобы проверить правильность установки этих значений в codespace, можно использовать 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
Помимо перечисленных выше значений, вы можете столкнуться с ошибками, если файлы точек, используемые в codespaces, содержат одно из следующих значений.
- Значение
user.signingkey
конфигурации Git - Значение
commit.gpgsign
конфигурации Git - Значение , заданное вручную
GITHUB_TOKEN
Удаление конфликтующей конфигурации
Если вы хотите, чтобы автоматическая проверка GPG для GitHub Codespaces была включена, необходимо удалить все конфликтующие конфигурации из файлов точек, используемых в codespaces.
Например, если глобальный .gitconfig
файл на локальном gpg.program
компьютере содержит значение и вы отправляете этот файл в репозиторий файлов точек, связанный с GitHub Codespaces, может потребоваться удалить gpg.program
из этого файла и установить его на уровне системы на локальном компьютере.
Примечание: Любые изменения в репозитории файлов точек будут применяться к новым пространствам кода, которые вы создаете, но не к существующим пространствам кода.
-
На локальном компьютере откройте терминал.
-
Чтобы удалить конфликтующее значение из
~/.gitconfig
(Mac/Linux) илиC:\Users\YOUR-USER\.gitconfig
(Windows), используйтеgit config --global --unset
команду .$ git config --global --unset gpg.program
-
Отправьте изменения в репозиторий файлов точек на GitHub.
-
При необходимости, чтобы сохранить локальную конфигурацию, снова задайте значение в файле конфигурации Git, который не отправляется в репозиторий файлов точек.
Например, с помощью флага
--system
можно задать конфигурацию в файле системного уровня вPATH/etc/gitconfig
, гдеPATH
— каталог, в котором установлен Git в вашей системе.$ git config --system gpg.program gpg2
Кроме того, если репозиторий файлов с точками содержит скрипт установки в распознаваемом файле, например install.sh
, можно использовать $CODESPACES
переменную среды, чтобы добавить условную логику, например параметр gpg.program
только в том случае, если вы не находитесь в codespace. В следующем примере возвращает значение true
, -z "$CODESPACES"
если вы не находитесь в codespace.
if [ -z "$CODESPACES" ]; then
git config --global gpg.program gpg2
fi
Дополнительные материалы
- "Сведения о проверке подписи фиксации"
git config
в официальной документации по Git