GPG 签署所有没有存储的 git 提交

Posted

技术标签:

【中文标题】GPG 签署所有没有存储的 git 提交【英文标题】:GPG sign all git commits without stash 【发布时间】:2014-08-17 04:32:21 【问题描述】:

git 2.0 有一个配置选项commit.gpgsign,它将签署所有提交。

这也适用于git stash,并会询问我的 gpg 密钥的密码。

有没有一种方法可以自动签署所有提交、标签……但排除隐藏?

【问题讨论】:

GPG 是否没有像ssh-agent 这样的用于 SSH 的凭证存储? @Cupcake:gpg-agent 会缓存凭据,但由于通常在最后一次提交和存储之间有一段时间,它会(并且应该)再次询问。 【参考方案1】:

这是别名领土:

git config --global alias.stashq '-c commit.gpgsign=false stash'

【讨论】:

GPG 是否没有像ssh-agent 这样的用于 SSH 的凭据存储?【参考方案2】:

我喜欢 jthill 的回答,只是想提供一个稍微不同的选项,这样您就不必学习输入新命令。您可以像这样在 .bashrc 中定义一个 shell 函数:

git() 
  case $1 in
    stash) set -- -c commit.gpgsign=false "$@" ;;
  esac
  command git "$@"

现在,当您运行 git stash 时,shell 函数会在调用 git 二进制文件之前插入额外的参数。

【讨论】:

我很久以前就赞成了,但我想指出,如果您向 git 命令本身提供任何选项,则仅使用 $1 是行不通的,例如,您可以 git -C ~/other/repo push 运行 push在另一个仓库中。 @jthill 确实,谢谢,如果这是一个问题,那么你的答案是更好的方法。

以上是关于GPG 签署所有没有存储的 git 提交的主要内容,如果未能解决你的问题,请参考以下文章

Git之签署工具GPG的安装和使用

gpg 未能签署数据致命:未能写入提交对象 [Git 2.10.0]

gpg无法签署致命的数据:无法写入提交对象[Git 2.10.0]

Git之深入解析如何通过GPG签署和验证工作

Mac上的git - gpg:错误:gpg无法签署数据

使用 Git 签署提交不需要我的密码