GPG 소개
- GPG를 사용하여 작업에 서명하기 위해 개인키를 설정하고, 공개키를 이용하여 서명을 확인할 수 있습니다.
- GPG 확인
-
$gpg --list-keys --------------------------------- pub 2048R/0A46826A 2014-06-04 uid Scott Chacon (Git signing key) <schacon@gmail.com> sub 2048R/874529A9 2014-06-04
-
- GPG 키 생성
-
$gpg --gen-key
-
- GPG 키 서명키 사용
-
$git config --global user.signingkey {GPG ID} # 위에 예시일 경우 GPG ID에 0A46826A를 넣습니다. # ed25519일 경우 pub 밑에 GPG ID가 있습니다.
-
태그 서명하기
-
$ git tag -s v1.5 -m 'my signed 1.5 tag'
- 서명한 태그 보기
-
$ git show v1.5 tag v1.5 Tagger: Ben Straub <ben@straub.cc> Date: Sat May 3 20:29:41 2014 -0700 my signed 1.5 tag -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJTZbQlAAoJEF0+sviABDDrZbQH/09PfE51KPVPlanr6q1v4/Ut LQxfojUWiLQdg2ESJItkcuweYg+kc3HCyFejeDIBw9dpXt00rY26p05qrpnG+85b hM1/PswpPLuBSr+oCIDj5GMC2r2iEKsfv2fJbNW8iWAXVLoWZRF8B0MfqX/YTMbm ecorc4iXzQu7tupRihslbNkfvfciMnSDeSvzCpWAHl7h8Wj6hhqePmLm9lAYqnKp 8S5B/1SSQuEAjRZgI4IexpZoeKGVDptPHxLLS38fozsyi0QyDyzEgJxcJQVMXxVi RUysgqjcpT8+iQM1PblGfHR4XAhuOqN5Fx06PSaFZhqvWFezJ28/CLyX5q+oIVk= =EFTF -----END PGP SIGNATURE-----
-
태그 확인하기
- 확인 작업을 하려면 서명한 사람의 GPG 공개키를 키 관리 시스템에 등록해두어야 한다.
-
$ gpg --import public.key
-
$ git tag -v v1.5
- git tag -v 명령을 이용하여 태그에 서명한 사람이 정말 그 사람이 맞는지 확인합니다.
-
gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A gpg: Can't check signature: public key not found error: could not verify the tag 'v1.4.2.1' # 서명한 사람의 공개키가 없으면 아래와 같은 메시지가 나타난다.
커밋 서명하기
- -S 옵션을 붙여주면 됩니다.
-
$ git commit -a -S -m 'signed commit'
- 커밋 서명 확인하기
-
$ git log --show-signature
-
$ git log --pretty="format:%h %G? %aN %s"
- %G 포맷을 이용하여 커밋에 서명이 올바른지 알 수 있습니다.
-
- 서명된 커밋만 Merge
-
$ git merge --verify-signatures non-verify
- Merge 할 때 --verify-signatures 옵션을 붙이면 Merge 할 커밋 중 서명하지 않았거나 신뢰할 수 없는 사람이 서명한 커밋이 있으면 Merge 되지 않는다.
-
- Merge 서명하기
-
$ git merge --verify-signatures non-verify -S
- -S 옵션을 이용하여 머지 커밋도 서명할 수 있습니다.
-
서명 기능을 사용하기 위해서는 모든 팀원이 이를 이해하고 사용해야 합니다. 그렇지 않으면 팀 내에서 문제가 발생할 수 있습니다.
'GIT > Git 도구' 카테고리의 다른 글
[GIT] 히스토리 편집하기 (0) | 2024.03.18 |
---|---|
[GIT] 히스토리 검색하기 (0) | 2024.03.18 |
[GIT] Stashing과 Cleaning (0) | 2024.03.11 |
[GIT] 대화형 명령 (0) | 2024.03.11 |
[GIT] 리비전 조회하기 (0) | 2024.03.11 |