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).
2 Answers
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.
-
3
-
7This argument is now hidden by default. The transient announcement explains how to show it by changing the "level".– tarsiusCommented May 12, 2019 at 21:50
-
6In case anyone stumbles here looking: magit.vc/manual/transient/Enabling-and-Disabling-Suffixes.html Commented May 13, 2019 at 6:10
-
@tarsius I don't seem to be able to change the level. How do I set about doing that? Thank you.– e18rCommented Jun 20, 2019 at 17:28
-
1Which part of the documentation that tejasbubane linked to is unclear?– tarsiusCommented Jun 20, 2019 at 19:36
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.
-
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.– ph0t0nixCommented Sep 12, 2018 at 8:28
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.