Skip to main content

GitHub Codespaces에 대한 GPG 확인 문제 해결

이 문서는 Codespaces 커밋 서명 오류 문제 해결을 제공합니다.

GPG 검증을 사용하도록 설정하면 GitHub Codespaces이(가) 선택한 리포지토리에서 만든 Codespaces에서 커밋에 자동으로 서명됩니다. 자세한 내용은 AUTOTITLE을(를) 참조하세요.

GPG 검증을 사용하도록 설정하면 관련 리포지토리에서 만든 새 codespace에서 자동으로 적용됩니다. 기존 활성 codespace에서 GPG 검증을 적용하려면 codespace를 중지하고 다시 시작해야 합니다. 자세한 내용은 Codespace 시작 및 중지을(를) 참조하세요.

GitHub Codespaces이(가) 커밋에 서명하지 못한 경우 명령줄 또는 Visual Studio Code 팝업 창에 오류 메시지 이 표시되었을 수 있습니다.

이 문서의 다음 섹션에서는 이 오류의 일반적인 원인에 대한 문제 해결 조언을 제공합니다.

  • 이전에 GitHub Codespaces에 대한 설정에서 GPG 검증을 사용하도록 설정했으며 최근에 GPG 확인을 사용하지 않도록 설정했거나 신뢰할 수 있는 리포지토리 목록에서 리포지토리를 제거한 경우 Git에서 커밋에 서명하려고 할 수 있습니다. 자세한 내용은 GPG 검증을 사용하지 않도록 설정 후 오류를 참조하세요.
  • Codespace에서 GPG 검증이 사용 설정된 경우, 커밋에 서명하기 위해 필요한 Git 구성을 재정의했을 수 있습니다. 자세한 내용은 Git 구성 충돌로 인한 오류를 참조하세요.
  • Codespace GPG 검증을 사용하지 않도록 설정되어 있고 VS Code의 "소스 제어" 보기에서 커밋하려고 할 때 오류가 발생하는 경우 VS Code 설정 때문일 수 있습니다. 자세한 내용은 VS Code "소스 제어" 보기의 오류를 참조하세요.

GPG 검증을 사용하지 않도록 설정 한 후 오류

GPG 검증을 사용하도록 설정하면 GitHub Codespaces은(는) 기본적으로 Codespaces에서 만드는 모든 커밋에 서명합니다. Git 구성 값을 특정 값으로 설정하여 이 작업을 수행합니다.

GPG 검증을 사용하지 않도록 설정하고 기존 코드 영역에서 작업하는 경우 이 값은 계속 으로 설정됩니다. 즉, GitHub Codespaces은(는) 커밋에 서명하려고 해도 GPG 검증 설정을 사용하지 않도록 설정했으므로 서명할 수 없습니다.

Codespace에서 서명되지 않은 일반 커밋을 계속하려면 터미널에 다음 명령을 입력하여 를 기본값 으로 다시 설정합니다.

Shell
git config --unset commit.gpgsign

구성에서 값이 올바르게 제거되었는지 확인하려면 을 입력하세요. 목록에 값이 표시되지 않아야 합니다.

Git 구성 충돌로 인한 오류

GitHub Codespaces은(는) 커밋에 자동으로 서명하기 위해 Codaspace에서 특정 Git 구성 값을 설정합니다. GitHub Codespaces에 의해 설정된 값을 재정의하는 경우 커밋에 서명할 수 없습니다.

GitHub Codespaces을(를) Git 구성 파일이 포함된 dot 파일 리포지토리와 연결한 경우 실수로 이러한 값을 재정의할 수 있습니다. GitHub Codespaces에서 dot 파일 사용에 대한 자세한 정보는 AUTOTITLE을 참조하세요.

충돌하는 구성 확인

GPG를 사용하여 커밋에 서명하려면 GitHub Codespaces은(는) 시스템 수준에서 다음 Git 구성 값을 자동으로 설정합니다.

구성 설정필수 값
user.nameGitHub 프로필에 설정된 전체 이름과 일치해야 합니다.
credential.helper로 설정해야 합니다.
gpg.program로 설정해야 합니다.

이러한 값이 codespace에서 올바르게 설정되었는지 확인하려면 명령을 사용하세요. GitHub Codespaces은(는) 시스템 수준에서 이 구성을 설정하므로 필요한 구성 설정은 에서 가져옵니다.

$ 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

위에 나열된 값 외에도 codespace에서 사용되는 dot 파일에 다음 값이 포함된 경우 오류가 발생할 수 있습니다.

  • Git 구성 값
  • Git 구성 값
  • 수동 설정

충돌하는 구성 제거

GitHub Codespaces에 대한 자동 GPG 검증을 사용하도록 설정하려면 codespaces에 사용되는 dot 파일에서 충돌하는 구성을 제거해야 합니다.

예를 들어 로컬 컴퓨터의 전역 파일에 특정 값이 포함되어 있고 이 파일을 GitHub Codespaces과 연결된 dotfiles 리포지토리에 푸시한 경우, 이 값을 해당 파일에서 제거하고 로컬 컴퓨터의 시스템 수준에서 설정하는 것이 좋습니다.

참고 항목

dot 파일 리포지토리에 대한 변경 내용은 만든 새 codespaces에 적용되지만 기존 codespaces에는 적용되지 않습니다.

  1. 로컬 컴퓨터에서 터미널을 엽니다.

  2.        `~/.gitconfig`(Mac/Linux) 또는 `C:\Users\YOUR-USER\.gitconfig`(Windows)에서 충돌하는 값을 제거하려면 `git config --global --unset` 명령을 사용합니다.
    
    git config --global --unset gpg.program
    
  3. GitHub의 dot파일 저장소에 변경 내용을 푸시하세요.

  4. 필요에 따라 로컬 구성을 유지하려면 dot 파일 리포지토리에 푸시하지 않는 Git 구성 파일에서 값을 다시 설정합니다.

    예를 들어 플래그를 사용하여 시스템 수준 파일에서 구성을 로 설정할 수 있습니다. 여기서 은 Git가 시스템에 설치된 디렉터리입니다.

    git config --system gpg.program gpg2
    

추가적으로, 만약 사용자의 dotfiles 리포지토리에 와 같이 인식된 파일 형식의 설치 스크립트가 포함되어 있는 경우라면, 환경 변수를 사용하여 codespace 안에 있지 않을 때에만 를 설정하는 것과 같은 조건부 논리를 추가할 수 있습니다. 다음 예제에서, 만약 사용자가 codespace안에 있지 않을 경우라면 는 을 반환합니다.

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

VS Code "소스 제어" 보기의 오류

GitHub Codespaces에 대한 설정에서 GPG 검증을 사용하지 않도록 설정하거나 codespace를 만든 리포지토리가 신뢰할 수 있는 리포지토리 목록에 없으면 Git에서 커밋에 서명하지 않아야 합니다. VS Code의 "소스 제어" 보기에서 커밋하려고 할 때 서명 오류가 발생하는 경우 codespace에서 VS Code 설정을 검사 합니다.

  1. 창의 왼쪽 아래 모서리에서 를 선택하고 설정을 클릭합니다.

    VS Code 웹 클라이언트 섹션의 스크린샷 메뉴의 기어 아이콘과 "설정" 옵션은 모두 주황색 윤곽선으로 강조 표시됩니다.

  2. "사용자" 탭의 검색 창에서 "gpg"를 검색합니다.

  3. "GPG 또는 X.509로 커밋 서명 사용" 설정이 선택 취소되었는지 확인합니다.

    "사용자" 설정 탭의 스크린샷입니다. "Enables commit signing with GPG or X.509"라고 적힌 선택 취소된 확인란이 주황색 윤곽선으로 표시되어 있습니다.

이 설정이 활성화되어 있으면, VS Code에서 커밋에 서명하지 않도록 검사 상자의 선택을 해제하거나, 작업 중인 리포지토리에 대해 GPG 검증을 활성화하여 커밋에 성공적으로 서명할 수 있도록 해야 합니다.

만약 VS Code 설정을 변경한 경우라면, 새로 생성하는 다른 codespace와 변경 내용을 공유하고 싶은 경우라면 설정 동기화가 활성화되어 있는지 반드시 확인해야 합니다. 신뢰하는 리포지토리에서 만든 codespace에서만 설정 동기화를 켜야 합니다. 자세한 내용은 AUTOTITLE을(를) 참조하세요.

추가 참고 자료

  • AUTOTITLE
  • Git 공식 설명서에서