질문 : gpg가 데이터에 서명하지 못했습니다. 커밋 개체를 쓰지 못했습니다. [Git 2.10.0]
Git 2.10 릴리스 노트 의 예쁜 속성에 대한 몇 가지 기사를 따랐습니다. git을 2.10.0으로 업그레이드하고 다음과 같이 .gitconfig
[filter "lfs"]
clean = git-lfs clean %f
smudge = git-lfs smudge %f
required = true
[user]
name = xyz
email = abc.def@gmail.com
signingkey = AAAAAAA
[core]
excludesfile = /Users/xyz/.gitignore_global
editor = 'subl' --wait
[difftool "sourcetree"]
cmd = opendiff \"$LOCAL\" \"$REMOTE\"
path =
[mergetool "sourcetree"]
cmd = /Applications/SourceTree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
trustExitCode = true
[alias]
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
[color "diff"]
old = red strike
new = green italic
하지만 이제는 다음을 사용하여 커밋에 서명하려고합니다.
git commit -a -S -m "message"
다음 오류가 표시됩니다.
비밀 키를 잠금 해제하려면 암호가 필요합니다.
사용자 : "XYZ (디지털 서명 됨)"
2048 비트 RSA 키, ID AAAAAAAA, 2016-07-01 생성
오류 : gpg가 데이터에 서명하지 못했습니다. 치명적 : 커밋 개체를 쓰지 못했습니다.
참고 git commit -a -m "message"
사용하여 변경 사항을 커밋 할 수 있습니다.
이를 극복 할 수있는 방법이 있습니까? 또는 git 업그레이드와 함께하기 위해 gpg
구성에 필요한 변경 사항이 있습니까?
업데이트 1
또한 추가적인 유용성을 추구 하며 GPG 키를 사용하여 Git에서 커밋을 "자동 서명"하는 방법이 있습니까? . 이미 사용하여 키를 구성했습니다.
git config --global user.signingkey ED5CDE14(with my key)
git config --global commit.gpgsign true
어쨌든 분명히 같은 오류가 발생합니다.
답변
OSX에서이 문제가 발생했습니다.
원본 답변:
gpg 업데이트 (brew)가 gpg
위치로 gpg1
변경된 것 같습니다. git이 gpg를 조회하는 바이너리를 변경할 수 있습니다.
git config --global gpg.program gpg1
gpg1이없는 경우 : brew install gpg1
.
수정 답변:
gpg1이 deprecated / "부드럽게 사용되지 않는 것 같습니다."이므로 실제로 gpg2로 업데이트해야합니다. 안타깝게도 여기에는 몇 단계 더 / 시간이 필요합니다.
brew upgrade gnupg # This has a make step which takes a while
brew link --overwrite gnupg
brew install pinentry-mac
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent
첫 번째 부분은 gpg2를 설치하고 후자는 이를 사용하는 데 필요한 해킹 입니다. 문제 해결을 위해이 답변을 참조하십시오 (그것이 brew가 아닌 Linux에 관한 것이지만), 좋은 테스트를 제안합니다.
echo "test" | gpg --clearsign # on linux it's gpg2 but brew stays as gpg
이 테스트가 성공하면 (오류 / 출력에 PGP 서명이 포함되지 않음) 최신 gpg 버전으로 성공적으로 업데이트 한 것입니다.
이제 git 서명을 다시 사용할 수 있습니다!
다음이 필요하다는 점은 주목할 가치가 있습니다.
git config --global gpg.program gpg # perhaps you had this already? On linux maybe gpg2
git config --global commit.gpgsign true # if you want to sign every commit
참고 : 서명 된 커밋을 실행 한 후 다음을 사용하여 서명되었는지 확인할 수 있습니다.
git log --show-signature -1
마지막 커밋에 대한 gpg 정보가 포함됩니다.
출처 : https://stackoverflow.com/questions/39494631/gpg-failed-to-sign-the-data-fatal-failed-to-write-commit-object-git-2-10-0
'개발관련 > Git' 카테고리의 다른 글
'git reset --hard HEAD'를 사용하여 이전 커밋으로 되돌리는 방법 (0) | 2021.10.01 |
---|---|
Windows의 Git Bash에서 'git diff' 결과를 종료하는 방법 (0) | 2021.09.30 |
Git이 프록시 서버에서 작동 - "Request timed out"로 실패 해결 방법 (0) | 2021.09.30 |
푸시되지 않은 git 커밋을 삭제하는 방법 (0) | 2021.09.30 |
Git에 가장 적합한 시각적 병합 도구에 대해서 (0) | 2021.09.29 |