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).
Asked
Active
Viewed 6,378 times
22
-
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[= – Nsukami _ Dec 01 '15 at 07:03]`. 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_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 Answers
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
-
2
-
5This argument is now hidden by default. The transient announcement explains how to show it by changing the "level". – tarsius May 12 '19 at 21:50
-
2In case anyone stumbles here looking: https://magit.vc/manual/transient/Enabling-and-Disabling-Suffixes.html – tejasbubane May 13 '19 at 06:10
-
@tarsius I don't seem to be able to change the level. How do I set about doing that? Thank you. – e18r Jun 20 '19 at 17:28
-
1Which part of the documentation that tejasbubane linked to is unclear? – tarsius Jun 20 '19 at 19:36
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
-
1This 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