我想使用git send-mail
向上游提交补丁,但我的Gmail帐户正在使用双因素身份验证。谷歌为这类事情提供了应用程序专用密码,但我的问题是哪里有存储此密码的安全位置,以便与git send-mail一起使用?
答案 0 :(得分:4)
原来git有a credential store。 Linux,OS X和Windows都有凭证助手,可以从操作系统的密钥环收集凭据。 This answer有几个例子。
修改强>
如果您希望将修补程序保存到草稿文件夹中,以便在发送之前进行查看(或者只是让Gmail更好地跟踪线索),您可以执行以下操作:
git config --global imap.host imaps://imap.gmail.com
git config --global imap.user your.email@gmail.com
git config --global imap.port 993
git config --global imap.sslverify false
git config --global imap.folder [Gmail]/Drafts
git format-patch --stdout | git imap-send
请注意,在撰写本文时,git不支持将git-credential
用于git-imap-send
。我写了一个补丁来解决这个问题。它正在等待合并到上游,但如果你不耐烦,它可用here。
答案 1 :(得分:1)
您可以使用普通的Git配置来存储密码,如下所示:
git config --global sendemail.smtpencryption tls
git config --global sendemail.smtpserver mail.example.com
git config --global sendemail.smtpuser fred@example.com
git config --global sendemail.smtpserverport 587
git config --global sendemail.smtppass smbumqjiurmqrywm
当然,这将以纯文本格式存储密码。您应确保其他人无法读取您的〜/ .gitconfig文件。
您也可以将密码存储在加密文件中并使用它。您仍然需要记住并输入加密密码,但至少您可以选择该密码。像gpg2
这样的东西应该可以解决问题。
当然,最后,唯一存储密码的真正安全的地方就在你的耳边。
答案 2 :(得分:1)
Git 2.0.x / 2.1(2014年第3季度)将为 git credential
支持 git imap-send
。
请参阅commit 791643a中的Dan Albert (DanAlbert
),现已合并到git/git master
分支:
git-imap-send
直接提示输入密码而不是使用git-credential
。另一方面,git-send-email
支持git-credential
。对于使用双因素身份验证的用户而言,这是一项必要的改进,因为他们不应该记住他们所有的应用专用密码。
2017年更新,对于Git 2.14.x / 2.15(2017年第4季度),git imap-send
仍将继续发展。
commit dbba42b点击commit 19079b3,commit 690307f,commit 200bc38,Nicolas Morey-Chaisemartin (nmorey
)(2017年9月14日){。}}。
(Junio C Hamano -- gitster
--合并于commit b67f154,2017年9月25日)
"
git imap-send
"我们有自己的协议实现,也有 可以在libCurl
协议支持下使用更新的imap
更新后者,以便它可以使用凭证子系统,然后 使它成为默认选项,以便我们最终可以弃用并删除前者。
答案 3 :(得分:1)
对于那些不想为此使用Gmail密码的人,我写了一个plug-in for git-send-email,它使用OAuth 2授权。它只要求最低的权限(代表您发送电子邮件),并像Git Credential Manager一样将OAuth令牌数据存储在Windows凭据存储中。
更新:Google有一个plug-in,其工作方式类似,但将凭据保存在文件中,并使用了较少的受限制令牌(所有Gmail和仅代表您发送电子邮件)。不过它可以在Linux上运行。