깃에서 커밋 시 -S 옵션을 통해 사인을 시도했으나, 다음과 같은 메시지가 나올 수 있다.
>git commit -S -m "your message" gpg: skipped "your name <your.email@example.com>": secret key not available gpg: signing failed: secret key not available error: gpg failed to sign the data fatal: failed to write commit object
결론만 이야기하면 원인은 두 가지다.
하나는 개인 키(secret key)가 없는 것이다. 아래의 명령어를 통해 개인 키가 있는지 여부를 확인할 수 있다.
>gpg --list-secret-keys /home/yourname/.gnupg/secring.gpg ----------------------------- sec# 4096R/488BA441 2013-03-13 uid your name <your.email@example.com> ssb 4096R/69B0EA85 2013-03-13 ssb 4096R/C24C2CDA 2013-03-13
만약 아무런 데이터가 보이지 않는다면, 키가 없으니 만들어주면 된다.
다른 하나는 윈도우 사용자의 경우 GPG가 저장하는 키 저장소의 위치와 깃이 참고하는 키 저장소의 위치가 다르다. GPG는
[사용자 폴더]/AppData/Roaming/gnupg/
에 키를 보관하지만 깃은
[사용자 폴더]/AppData/.gnupg/
폴더를 참조한다. 해결책은 secring.gpg와 pubring.gpg, gpg.conf 파일을 깃이 참고하는 폴더로 복사해주면 된다.
그 밖에
gpg 명령어가 안된다면, GPG(GNU Privacy Guard)에서 도구를 다운받아 설치하자.
참고
핑백: 깃에 GPG(GNU Privacy Guard) 설정 | Dog발자