[GIT] 작업에 서명하기

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