git 커밋 GPG로 서명하기

!
경고: 이 글이 작성된 지 365일이 넘었습니다. 글의 정보가 오래되어 부정확할 수 있습니다.

GPG로 git 커밋에 서명하면 깃허브에서 “Verified” 배지가 붙습니다. 하지만 매번 git -S를 입력하려니 꽤 귀찮은데, 이 튜토리얼로 다시는 -S 태그 입력 없이 커밋에 서명할 수 있습니다!

다음 명령을 실행합니다 (두 번째 명령에서 키는 당연히 변경해야 합니다):

git config --global commit.gpgsign true
git config --global user.signingkey <키 ID>

GPG 키 ID를 잊었다면:

gpg --list-keys --keyid-format short

GPG 사용 방법을 모르시면, 제 GPG 가이드를 확인해보세요.

문제 해결

만약 git 커밋시 다음 에러가 발생한다면:

error: gpg failed to sign the data
fatal: failed to write commit object

gpg가 쉘 인스턴스를 찾지 못해서 발생하는 문제입니다. 수정하려면 다음 줄을 사용하는 쉘에 따라 ~/.bashrc~/.zshrc에 추가합니다:

export GPG_TTY=$(tty)

VS Code 사용 시 터미널 윈도우 크기가 프롬프트보다 작은 경우에도 에러가 발생할 수 있습니다. 터미널 윈도우의 크기를 키우면 문제가 해결됩니다.

윈도우

만약 GPG4Win을 사용하여 GPG 키들을 관리하신다면, 다음 명령을 터미널에서 실행해야 할 수도 있습니다:

git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"

이 명령을 실행하면 git이 Git for Windows와 같이 오는 gpg.exe 실행파일 대신 GPG4Win의 실행파일을 사용하게 됩니다.

댓글