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 提交的主要内容,如果未能解决你的问题,请参考以下文章
gpg 未能签署数据致命:未能写入提交对象 [Git 2.10.0]