如何将git-credential-gopass与git send-email配合使用?
解决git send-email调用gopass仍弹出密码提示的问题
可能的原因及解决步骤
1. 直接给git send-email指定密码获取命令
git send-email本身支持通过passcmd选项直接调用密码管理工具,这比依赖credential helper更直接可靠。修改你的全局Git配置,在[sendemail]段添加:
[sendemail] smtpserver = example.com smtpuser = user@example.com smtpencryption = ssl smtpserverport = 465 passcmd = gopass mail/example_email
保存配置后,再尝试发送补丁,应该不会再弹出密码提示。
2. 修正credential helper的配置格式
如果你坚持用credential helper,注意git-credential-gopass的正确配置方式不需要在helper字段里指定具体条目路径,而是让gopass自动匹配对应的凭证。修改你的配置为:
[sendemail] smtpserver = example.com smtpuser = user@example.com smtpencryption = ssl smtpserverport = 465 [credential] helper = gopass [credential "smtp://example.com:465"] username = user@example.com
同时确保gopass中存储的凭证条目对应的URL是smtp://user@example.com@example.com:465(和提示里的一致),或者gopass能通过用户名、主机、端口匹配到对应的密码。
3. 验证凭证匹配是否正常
可以用git credential fill命令测试credential helper是否能正确返回密码:
在终端输入以下内容(输入完后按两次回车):
protocol=smtp host=example.com port=465 username=user@example.com
如果能输出包含password=xxx的内容,说明匹配正常;如果没有,检查gopass里的条目是否正确,或者调整条目名称让gopass能识别。
4. 检查Git版本
旧版本的Git对send-email的credential helper支持可能有缺陷,建议升级到较新的Git版本(比如2.30以上)再尝试。
内容的提问来源于stack exchange,提问作者dogman
相关产品推荐
相关产品推荐

