It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

can't commit

>error: gpg failed to sign the data

>fatal: failed to write commit object

 

I tried to commit with sourcetree and terminal with no results. Not sure why my gpg key wont work

2 answers

2 votes

Hi Tim,

I ran into a similar issue on my Mac a couple years back and it turns out my key was expired.  I was not using SourceTree, only the Command line so as long as you're sure your keys are still valid, take a look at the StackOverflow article gpg failed to sign the data fatal: failed to write commit object [Git 2.10.0].  The accepted answer was as follows:

 

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.


Please try the steps outlined above and if that doesn't help there are numerous suggestions in that article.  If none of that helps run a git trace and post the results:

GIT_TRACE=1 git commit -m "Test Commit to get errors"

Cheers,

Branden

Installing pinentry was what I needed! Thanks so much.

On my Mac, with Homebrew installed gpg and pinentry-mac, the following git configuration   resolved the error:

[user]
name = My Name
email = xxxxx@users.noreply.github.com
signingkey = XXXXXXX
[credential]
helper = osxkeychain
[commit]
gpgsign = true
[gpg]
program = /usr/local/bin/gpg 

Suggest an answer

Log in or Sign up to answer
TAGS
Community showcase
Published in Bitbucket

Bitbucket Server 7.0 is here!

Hello Community, I’m Anton Genkin, a product manager on the Bitbucket Server and Data Center team and am excited to share that Bitbucket Server 7.0 is now available! It's a platform release, one th...

994 views 6 5
Read article

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you