22

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).

shackra
  • 2,702
  • 18
  • 47
  • Does Git even support commit signing? I thought only tags could be signed… –  Dec 01 '15 at 06:39
  • 1
    @lunaryorn `git commit -S[], --gpg-sign[=]`. 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 01 '15 at 07:03
  • @Nsukami_That does not answer my question, does it? –  Dec 01 '15 at 07:08
  • 1
    @lunaryorn Sorry if it doesn't answer your question. Yes, Git support [commit signing](http://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work#Signing-Commits) – Nsukami _ Dec 01 '15 at 09:43

2 Answers2

33

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.

tarsius
  • 25,298
  • 4
  • 69
  • 109
23

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.

csantosb
  • 1,045
  • 6
  • 15
  • 1
    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 08:28