Signed Commit
서명된 Commit의 필요성
GitHub을 사용하는 경우, $ git config
에서 user.name
과 user.email
을 지정할 수 있습니다.
이 때, 지정 및 변경이 매우 쉽기 때문에 (git config --global user.name [하고싶은이름]
, email의 경우 user.name
부분을 user.email
로 변경해서 넣으면 됨) 여러 명이 같은 저장소에서 개발할 때 author를 조작하여 본인이 한 커밋이 아니더라도 본인의 정보로 commit 이력이 남을 수 있습니다.
이를 방지하기 위해 누군가의 commit이 본인의 commit이 맞는지 확인할 수 있도록 서명된 commit을 사용합니다.
서명하기
1. GPG를 설치합니다.
- GPG(GNU Privacy Guard)란?
- PGP(Pretty Good Privacy)라는 이메일에 쓰이는 암호화 도구를 기반으로 만든 구현체(소프트웨어)입니다. 일반적으로 RSA를 사용하며, 이 외에 다양한 알고리즘을 지원합니다.
설치는 https://gnupg.org/download/index.html 여기서 하시면 됩니다.
저는 윈도우를 사용하기 때문에 Gpg4win을 다운받아 설치했습니다.
우분투는 apt install gpg
, 맥은 brew install gpg
로 설치가 가능합니다.
2. GPG 서명하기
1) $ gpg --full-generate-key
를 입력합니다.
그럼 여러 선택지가 뜨는데요 원하는 선택지를 입력해주시면 됩니다.
간단히 설명하자면 각각 암호화 방식, 키 사이즈, 키 유효기간, 이름, 이메일, 주석(comment)입니다.
암호화 방식은 기본 값이므로 기냥 엔터치거나 1을 입력하면 되고,
키 사이즈의 경우 기본 값은 3072로 되어있지만, github에서 사용하기 위해서는 4096을 입력해야한다고 합니다.
키 유효기간의 경우 0을 입력하면 유효기간이 무한이 됩니다. 저는 2y를 입력하여 2년으로 설정했습니다.
이름, 이메일, 주석까지 입력하고 나면 키에 대한 암호(Passphrase)를 입력하게 됩니다.
해당 암호는 임의로 원하는 암호를 입력하시면 됩니다. (커밋할 때 사용되므로 기록해놓기!)
$ gpg --full-generate-key
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
(14) Existing key from card
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (3072) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 2y
Key does not expire at all
Is this correct? (y/N) y
GnuPG needs to construct a user ID to identify your key.
Real name: myoung
Email address: jomyounghee32@gmail.com
Reference
https://stuffstuff.tistory.com/5
https://blog.iswan.kr/technical/create-gpg-signature/
https://kangraemin.github.io/git/2021/04/04/signed-commit/
'Study > Git' 카테고리의 다른 글
expander control(접기/펼치기 만들기) (0) | 2021.12.10 |
---|---|
1일 1커밋 365일 달성 기념 자축 (4) | 2021.12.09 |
git commit message 작성법 (2) | 2021.08.24 |
commit (0) | 2021.08.23 |
git init (0) | 2021.08.23 |