편집 : 힘내 버전 1.7.9로, 이다 가능 (힘내 커밋에 서명git commit -S
). 이것을 반영하기 위해 답변을 약간 업데이트하십시오.
질문 제목은 다음과 같습니다.
GPG 키를 사용하여 Git에서 커밋을 "자동 서명"하는 방법이 있습니까?
짧은 대답 : 예,하지만하지 마십시오.
문제의 오타를 해결 : git commit -s
커밋에 서명하지 않습니다. 오히려 man git-commit
페이지에서 :
-s, --signoff
커밋 로그 메시지 끝에 커미터가 서명 한 줄을 추가합니다.
이것은 다음과 유사한 로그 출력을 제공합니다.
± $ git log [0:43:31]
commit 155deeaef1896c63519320c7cbaf4691355143f5
Author: User Name
Date: Mon Apr 16 00:43:27 2012 +0200
Added .gitignore
Signed-off-by: User Name
"Signed-off-by ::"비트를주의하십시오. 그 -s
깃발에 의해 생성 된git-commit
.
출시 발표 이메일 인용 :
- "git commit"은 커밋을 GPG 서명하기 위해 "-S"를 배웠다. 이것은 "--show-signature"옵션과 함께 "git log"로 표시 될 수 있습니다.
예, 커밋에 서명 할 수 있습니다. 그러나 저는이 옵션에 개인적으로주의를 기울입니다. 커밋 자동 서명은 무의미한 옆에 있습니다. 아래를 참조하십시오.
부수적 인 질문, 아마도 커밋에 서명해서는 안되며, 단일 커밋을 제출할 때 절대 태그를 만들지 않을 것입니다.
맞습니다. 커밋은 서명되지 않습니다. 태그입니다. 이에 대한 이유는 Linus Torvalds 가이 메시지에서 찾을 수 있습니다 .
각 커밋에 서명하는 것은 완전히 어리 석습니다. 그것은 당신이 그것을 자동화한다는 것을 의미하며, 서명을 덜 가치있게 만듭니다. SHA1의 git DAG-chain이 작동하는 방식으로,
그 중 하나에서 도달 가능한 모든 커밋을 효과적으로 적용 할 수 있도록 하나의 서명 만 있으면됩니다 . 따라서 각 커밋에 서명하는 것은 요점이 없습니다.
커밋에 자동으로 서명하는 것이 내가 할 수있는 것보다 훨씬 좋은 방법이 아닌 이유 를 분명히하는 링크 된 메시지를 찾아 보는 것이 좋습니다.
그러나 태그 에 자동으로 서명 git-tag -[s|u]
하려면 별명 으로 래핑하여이를 수행 할 수 있습니다 . 그렇게하려면 키 ID ~/.gitconfig
또는 프로젝트 특정 .git/config
파일 을 설정하고 싶을 것입니다 . 이 프로세스에 대한 자세한 내용은 git 커뮤니티 책 에서 볼 수 있습니다 . 서명 태그는 커밋마다 서명하는 것보다 훨씬 유용합니다.