GPG 키로 Git에서 커밋을 "자동 서명"하는 방법이 있습니까?
Git가 생성된 각 커밋 또는 태그에 항상 서명하도록 하는 쉬운 방법이 있습니까?
저는 다음과 같은 것으로 시도했습니다.
별칭 commit = commit -S
하지만 그것은 효과가 없었습니다.
이 작업을 수행하기 위해 다른 프로그램을 설치하고 싶지 않습니다.그것은 쉽게 할 수 있습니까?
부수적인 질문입니다. 커밋에 서명하면 안 됩니다. 제가 홈브루와 같은 프로젝트에 대해 단일 커밋을 제출할 때는 절대 만들지 않는 태그만 작성해야 합니다.
추가를: 추가하기를 원하는 경우-S
pu
현재로서는 2013년 12월이므로 Git 릴리스에 도달할 것이라는 보장이 없습니다.)에서 해당 옵션을 처리할 구성을 추가합니다.
2014년 5월 업데이트: Git 2.0 버전입니다(이 패치 시리즈에서 다시 전송된 후).
Nicolas Vigier(boklm)의 커밋 2af2ef3를 참조하십시오.
추가합니다.commit.gpgsign
할 수 입니다.
당신이 모든 , 은 GPG를 .
-S
항상 선택할 수 있습니다.
그commit.gpgsign
구성 옵션을 사용하면 모든 커밋에 자동으로 서명할 수 있습니다.
commit.gpgsign
모든 커밋에 GPG 서명 여부를 지정하는 부울입니다.
기본 재배치와 같은 작업을 수행할 때 이 옵션을 사용하면 많은 수의 커밋이 서명될 수 있습니다.GPG 암호를 여러 번 입력하지 않도록 에이전트를 사용하는 것이 편리할 수 있습니다.
이 구성은 일반적으로 레포 단위로 설정됩니다(개인 실험 로컬 저장소에 서명할 필요가 없음).
cd /path/to/repo/needing/gpg/signature
git config commit.gpgsign true
당신은 그것과 결합할 것입니다.user.signingKey
전역 설정으로 사용됨(커밋에 서명할 모든 repo에 사용됨)
git config --global user.signingkey F2C7AB29!
^^^
Asubombi는 코멘트에서 제안합니다 (그리고 "사용자 ID를 지정하는 방법"에 기초하여 "GPG 하드웨어 키 및 Git 서명"에서 설명합니다).
gpgan 느낌사시용표▁(시▁gp▁()를 (
!
또는 키를 할 수 기본 를 사용할지 하지 않습니다.)는 지정된 기본 또는 보조 키를 사용하여 강제로 추가할 수 있으며, 사용할 기본 또는 보조 키를 계산하지 않습니다.
YubiKey(권장 사항)와 같은 것을 사용하는 경우 기본 키 쌍에 사용할 수 있는 유일한 서명 키는 다음과 같기 때문에 느낌표에 대해 걱정할 필요가 없습니다.
- 키 기키자체, 키다있합어니다야음이는을 .
#
수 없다고 에, 할수없표시후에사된고다용▁after후에사된표▁indic시.- 에 리고비서함께와키브밀그▁a▁with▁and▁thekey▁secret께▁sub함와.
>
애플릿에서 유일하게 사용 가능한 서명 키로 YubiKey를 가리키는 스텁을 나타냅니다.시스템에서 모든 개인 키를 사용할 수 있는 상태로 유지하는 경우에만(나쁜 관행), 사용 가능한 서명 키 간의 자동 선택을 방지하는 것이 좋습니다.
user.signingKey
git 1.5.0(2007년 1월)에 commit d67778e로 도입되었습니다.
git 저장소와 gpg 키에 동일한 형태의 이름을 사용할 필요가 없습니다.
또한 키 링에 여러 개의 키가 있을 수 있으며 커밋 메시지에서 사용하는 주소와 일치하지 않는 키를 사용할 수 있습니다.
" " " 를 합니다.
user.signingKey
존재하는 경우 gpg에 대한 "-u" 스위치로 전달되어 태그 서명 키를 재정의할 수 있습니다.
이것은 사용자가 잘못 구성한 경우를 포착하기 위해 commit aba9119(git 1.5.3.2)로 시행됩니다.user.signingKey
의 들의에..git/config
아니면 열쇠고리에 비밀 열쇠가 없을 수도 있어요
주의:
- 관례상, 2015년 3월 2.4.0 git 이후, 그것은, 비록, 그렇지 않습니다.
git config
키는 대소문자를 구분하지 않습니다.당신이 그렇게 한다면 그것은 중요할 것입니다.git config --get-regexp
대소문자를 구분하며, 그렇지 않으면 가독성 규칙일 뿐입니다. - Git 서버가 각 푸시에 대한 서명을 확인하도록 하려면 적어도 Git 2.2+(2014년 10월)가 필요합니다. (commit b945901).
user.signingKey
구성 값; - 2는 git 2.9 (2016년 6월)을 사용할 입니다.는
user.signingKey
주석이 달린 태그와 커밋에 서명하도록 강제합니다. 61c2fe0.
git config --global user.signingKey 9E08524833CB3038FDE385C54C0AFCCFED5CDE14
git config --global commit.gpgSign true
9E08524833 교체CB3038FDE385C54C0키 ID로 AFCCFED5CDE14를 입력합니다.기억:짧은 아이디를 사용하는 것은 결코 좋은 생각이 아닙니다.
업데이트: 새 기표에 따라 모든 구성 키는 camelCase여야 합니다.
편집 : Git 버전 1.7.9 기준으로 Git 커밋(git commit -S
). 이를 반영하여 답변을 약간 업데이트합니다.
질문 제목은 다음과 같습니다.
GPG 키로 Git에서 커밋을 "자동 서명"하는 방법이 있습니까?
간단한 대답: 네, 하지만 하지 마세요.
:git commit -s
커밋에 서명하지 않습니다.대신 페이지에서:
, --사인오프프
커밋 로그 메시지 끝에 커밋 기준으로 사인 오프 라인을 추가합니다.
그러면 다음과 유사한 로그 출력이 제공됩니다.
± $ 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"를 학습하여 커밋에 서명합니다. 이것은 "git log"에 대한 "--show-signature" 옵션과 함께 표시될 수 있습니다.
예, 커밋에 서명할 수 있습니다.그러나 개인적으로 이 옵션을 사용할 때 주의할 것을 권장합니다. 자동으로 커밋에 서명하는 것은 거의 무의미합니다. 아래를 참조하십시오.
부수적인 질문입니다. 커밋에 서명하면 안 됩니다. 제가 커밋을 하나 제출할 때는 절대 만들지 않는 태그만 작성해야 합니다.
맞습니다.커밋은 서명되지 않고 태그는 서명됩니다.그 이유는 리누스 토르발스의 이 메시지에서 찾을 수 있는데, 마지막 단락은 다음과 같습니다.
각 커밋에 서명하는 것은 완전히 바보 같은 짓입니다.이는 자동화를 통해 서명의 가치를 낮출 수 있다는 것을 의미합니다.또한 SHA1의 Git DAG 체인 작업 방식에 따라 해당 서명에서 도달할 수 있는 모든 커밋이 해당 서명에 의해 효과적으로 처리되도록 하려면 하나의 서명만 필요하기 때문에 실제 가치가 추가되지 않습니다.따라서 각 커밋에 서명하는 것은 요점을 놓치고 있습니다.
저는 자동으로 커밋에 서명하는 것이 제가 할 수 있는 것보다 훨씬 더 나은 방법으로 좋은 생각이 아닌 이유를 설명하는 링크된 메시지를 찾아보기를 권장합니다.
그러나 태그를 자동으로 서명하려면 태그를 포장하여 서명할 수 있습니다.git-tag -[s|u]
가명으로; 만약 당신이 그렇게 할 것이라면, 당신은 아마도 당신의 키 ID를 설정하고 싶을 것입니다.~/.gitconfig
또는프트로다릅다니별젝로▁the▁or-다다▁project릅니..git/config
파일. 그 과정에 대한 더 많은 정보는 git 커뮤니티 북에서 볼 수 있습니다.태그에 서명하는 것이 각 커밋에 서명하는 것보다 훨씬 유용합니다.
먼저 모든 커밋, 태그 및 푸시에 서명할 공용 키를 설정합니다.공용 키를 가져오려면 다음 명령을 사용합니다.
% gpg --list-keys --keyid-format=short
/home/blueray/.gnupg/pubring.kbx
-------------------------------
pub rsa3072/F6EED39A 2021-12-25 [SC] [expires: 2023-12-25]
이 는 " 경공개키는우이"입니다.F6EED39A
이제 다음 명령을 실행합니다.
git config --global user.signingkey F6EED39A
git config --global commit.gpgSign true // sign all commits
git config --global tag.gpgSign true // sign all tags
git config --global push.gpgSign true // sign all push
다음을 사용하는 경우 참고하시기 바랍니다.push.gpgSign true
서버가 서명된 밀어넣기를 지원하지 않으면 밀어넣기가 실패합니다.대안은 다음을 사용하는 것입니다.
git config --global push.gpgSign "if-asked"
즉, 서버가 지원하는 경우 모두 밀어넣기에 서명합니다.
이제 모든 커밋, 태그 및 푸시는 지정된 공개 키에 의해 자동으로 서명됩니다.
때때로 이러한 설정을 재정의해야 할 수도 있습니다.
커밋의 커의경우, 용사를 합니다.git commit --no-gpg-sign -m "Unsigned commit"
태그의 경우 사용git tag --no-sign <tag-name>
푸용시, 용사용을 합니다.git push --no-signed
아니면,--signed=false
.
자동 서명 작업 사전 설정 버전 2.0을 만들려면 커밋을 위한 git 별칭을 추가해야 합니다.
# git config --global alias.commit "commit -S"
[alias]
commit = commit -S
커밋 또는 태그에 서명하는 경우 전체 내역을 승인하는 것이 아님을 분명히 해야 합니다.커밋의 경우에는 변경사항에 서명만 하고 태그의 경우에는 음..당신은 그것으로 당신이 의미하는 것을 정의할 필요가 있습니다.다른 사용자가 리모컨에 밀어 넣었기 때문에 자신이 변경한 것이라고 주장하지만 그렇지 않은 변경 사항을 적용했을 수 있습니다.아니면 당신이 참여하고 싶지 않은 변화이지만, 당신은 방금 태그에 서명했습니다.
일반적인 OSS 프로젝트에서는 이 작업이 덜 일반적일 수 있지만, 기업 시나리오에서는 가끔 코드를 터치하고 전체 내역을 읽지 않는 경우에는 이 작업이 눈에 띄지 않을 수 있습니다.
커밋에 서명하는 것은 만약 커밋이 다른 부모들에게 재조정되거나 선택된다면 문제입니다.그러나 수정된 커밋이 실제로 확인하는 "원래" 커밋을 가리킬 수 있다면 좋을 것입니다.
언급URL : https://stackoverflow.com/questions/10161198/is-there-a-way-to-autosign-commits-in-git-with-a-gpg-key
'programing' 카테고리의 다른 글
Xcode의 빌드 폴더는 어디에 있습니까? (0) | 2023.05.09 |
---|---|
Windows에서 Redis를 실행하려면 어떻게 해야 합니까? (0) | 2023.05.09 |
에서 전자 메일 주소 형식을 확인하려면 어떻게 해야 합니까?NET Framework? (0) | 2023.05.09 |
iOS Swift App의 백그라운드 보기에 그라데이션을 적용하는 방법 (0) | 2023.05.09 |
SQL Server의 INSERT INTO SELECT 쿼리에서 중복 방지 (0) | 2023.05.09 |