如何在.gitconfig中用pass+sed设置smtppass替代明文密码?
用pass+sed替代.gitconfig中的明文SMTP密码
当然可以,Git的sendemail.smtppass配置项支持直接调用外部命令获取密码,只要把配置值改成以!开头的命令即可,具体操作如下:
方法一:直接编辑.gitconfig
把原来的明文密码行替换成:
[sendemail] # 保留其他原有配置 smtppass = "!pass show host.com/johndoe.com | sed -n '3p'"
方法二:用git config命令设置(更安全,避免手动编辑出错)
执行以下命令全局配置(如果只想针对当前仓库,去掉--global参数):
git config --global sendemail.smtppass "!pass show host.com/johndoe.com | sed -n '3p'"
注意事项
- 确保你的Git版本在2.18及以上(这个版本开始支持配置值的命令替换)
- 运行Git的环境要能正常调用
pass和sed命令,PATH变量里得包含它们的路径 - 如果你的pass密钥需要解锁,记得提前用gpg-agent缓存密钥,不然发送邮件时可能会卡在密码输入环节(终端环境没问题,GUI环境可能需要额外配置)
- 命令外层的双引号是为了避免Git解析命令里的空格和管道符出错,不要省略
你可以用git config --get sendemail.smtppass查看配置是否生效,或者直接发送一个测试补丁验证是否能正常获取密码发送。
内容的提问来源于stack exchange,提问作者Thanos_Apollo
相关产品推荐
相关产品推荐

