Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

Устранение неполадок с проверкой GPG для GitHub Codespaces

В этой статье приводятся рекомендации по устранению ошибок, связанных с подписыванием фиксаций в codespaces.

Если включить проверку 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 по умолчанию , введя следующую команду в терминале.

Shell
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 из этого файла и установить его на уровне системы на локальном компьютере.

Примечание: Любые изменения в репозитории файлов точек будут применяться к новым пространствам кода, которые вы создаете, но не к существующим пространствам кода.

  1. На локальном компьютере откройте терминал.

  2. Чтобы удалить конфликтующее значение из ~/.gitconfig (Mac/Linux) или C:\Users\YOUR-USER\.gitconfig (Windows), используйте git config --global --unset команду .

    $ git config --global --unset gpg.program
    
  3. Отправьте изменения в репозиторий файлов точек на GitHub.

  4. При необходимости, чтобы сохранить локальную конфигурацию, снова задайте значение в файле конфигурации Git, который не отправляется в репозиторий файлов точек.

    Например, с помощью флага --system можно задать конфигурацию в файле системного уровня в PATH/etc/gitconfig, где PATH — каталог, в котором установлен Git в вашей системе.

    $ git config --system gpg.program gpg2
    

Кроме того, если репозиторий файлов с точками содержит скрипт установки в распознаваемом файле, например install.sh, можно использовать $CODESPACES переменную среды, чтобы добавить условную логику, например параметр gpg.program только в том случае, если вы не находитесь в codespace. В следующем примере возвращает значение true , -z "$CODESPACES" если вы не находитесь в codespace.

Shell
if [ -z "$CODESPACES" ]; then
  git config --global gpg.program gpg2
fi

Дополнительные материалы