gpg failed to sign the data fatal: failed to write commit object [Git 2.10.0]

前端 未结 30 2018
难免孤独
难免孤独 2020-11-27 23:55

I followed few articles over the pretty attributes on Git 2.10 release note. Going through which upgraded the git to 2.10.0 and made changes to global .gitconfig

30条回答
  •  萌比男神i
    2020-11-28 00:36

    I ran into this issue with OSX.

    Original answer:

    It seems like a gpg update (of brew) changed to location of gpg to gpg1, you can change the binary where git looks up the gpg:

    git config --global gpg.program gpg1
    

    If you don't have gpg1: brew install gpg1.

    Updated answer:

    It looks like gpg1 is being deprecated/"gently nudged out of usage", so you probably should actually update to gpg2, unfortunately this involves quite a few more steps/a bit of time:

    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
    

    The first part installs gpg2, and latter is a hack required to use it. For troubleshooting, see this answer (though that is about linux not brew), it suggests a good test:

    echo "test" | gpg --clearsign  # on linux it's gpg2 but brew stays as gpg
    

    If this test is successful (no error/output includes PGP signature), you have successfully updated to the latest gpg version.

    You should now be able to use git signing again!
    It's worth noting you'll need to have:

    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
    

    Note: After you've ran a signed commit, you can verify it signed with:

    git log --show-signature -1
    

    which will include gpg info for the last commit.

提交回复
热议问题