如何使用magit自动签署提交?


13

我对我的每次提交都用我的GPG密钥签名感兴趣。由于我使用magit与git进行接口,所以我想知道是否可以告诉magit对每个提交进行签名(或者至少可以通过某种变通办法来实现)。


Git甚至支持提交签名吗?我以为只有标签可以签名……
lunaryorn 2015年

1
@lunaryorn git commit -S[<keyid>], --gpg-sign[=<keyid>]。签署每次提交至少有一个理由:要有更充分的证据证明该提交来自您认为的那个人。签名标签仅允许您检测历史记录更改。
Nsukami _

@Nsukami_那没有回答我的问题,是吗?
lunaryorn

@lunaryorn对不起,如果没有回答您的问题。是的,Git支持提交签名
Nsukami _

Answers:


20

在Magit中,使用提交弹出窗口(c)创建提交。因此,该弹出窗口将是开始寻求gpg支持的好地方。如果这样做,那么您将发现:

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

因此,键入= S并选择一个键。为了避免每次创建提交时都必须执行此操作,可以使用来保存该参数(以及所有其他当前设置的参数)的值C-x C-s

您可能仍然需要每次都输入密码。为了避免这种情况,您应该启动gpg-agent并确保Emacs知道它,例如使用keychainshell脚本和keychain-environmentEmacs软件包。

另请参阅并--show-signature在日志记录弹出窗口中设置参数。


这个改变了transient吗?
tejasbubane

1
现在默认情况下隐藏此参数。临时公告说明了如何通过更改“级别”来显示它。
tarsius

如果有人在这里跌跌撞撞地寻找:magit.vc/manual/transient/Enabling-and-Disabling-Suffixes.html
tejasbubane

@tarsius我似乎无法更改级别。我该如何着手呢?谢谢。
e18r

tejasbubane链接到的文档的哪一部分不清楚?
tarsius

15

尝试在您$HOME/.gitconfig或您的.git/config

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

然后像往常一样提交。


这个答案的优点是您可以为每个存储库设置一个密钥。似乎magit的=S选项将键设置为$HOME/.gitconfig,因此所有存储库都相同。
ph0t0nix
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.