12

I'm interested on having each of my commits signed with my GPG key. Since I use magit for interfacing with git, I was wondering if telling magit to sign each commit was possible (or some workaround to achieve this was feasible, at least).

  • Does Git even support commit signing? I thought only tags could be signed… – lunaryorn Dec 1 '15 at 6:39
  • 1
    @lunaryorn git commit -S[<keyid>], --gpg-sign[=<keyid>]. There is at least one reason to sign each commit: to have stronger evidence that the commit came from the person you think it did. Signing tags only allows you to detect history changes. – Nsukami _ Dec 1 '15 at 7:03
  • @Nsukami_That does not answer my question, does it? – lunaryorn Dec 1 '15 at 7:08
  • @lunaryorn Sorry if it doesn't answer your question. Yes, Git support commit signing – Nsukami _ Dec 1 '15 at 9:43
20

In Magit commits are created using the committing popup (c). That popup would therefore be a good place to start looking for gpg support. If you do that, then you will find this:

=S Sign using gpg (--gpg-sign=)

So type = S and the select a key. To avoid having to do that every time you create a commit you can save the value of that argument (and all other currently set arguments) using C-x C-s.

You might still have to type the passphrase every time. To avoid that you should start a gpg-agent and make sure Emacs knows about it, e.g. using the keychain shell script and the keychain-environment Emacs package.

Also see and set the --show-signature argument in the logging popup.

13

Try this in your $HOME/.gitconfig or your .git/config

[user]
    email = YourEmail
    name = YourName
    signingkey = XXXXXXXX
[commit]
    gpgsign = true

Then just commit as usual.

  • This answer has the advantage that you can set a key per repository. It seems that magit's =S option sets the key in $HOME/.gitconfig, so the same for all your repositories. – ph0t0nix Sep 12 '18 at 8:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.