我想git send-mail
用来向上游提交补丁,但我的 gmail 帐户使用的是两因素身份验证。谷歌为这样的事情提供了特定于应用程序的密码,但我的问题是在哪里可以安全地存储此密码以供 git send-mail 使用?
4 回答
原来 git 有一个 credential store。Linux、OS X 和 Windows 都有凭证助手,可以从操作系统的密钥环中收集凭证。这个答案有几个例子。
如果您希望将补丁保存到草稿文件夹中,以便在发送之前查看它(或者只是为了让 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-credential
git-imap-send
从 git 2.1.0 开始支持。
您可以使用普通的 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
应该可以解决问题。
当然,最后,唯一真正安全的存储密码的地方是在你的耳朵之间。
Git 2.0.x/2.1(2014 年第三季度)将git credential
支持git imap-send
.
请参阅Dan Albert ( )的提交 791643a,现在合并到分支:DanAlbert
git/git master
imap-send:使用 git-credential
git-imap-send
直接提示输入密码而不是使用git-credential
.git-send-email
,另一方面,支持git-credential
。
对于使用双重身份验证的用户来说,这是一项必要的改进,因为不应期望他们记住所有应用专用密码。
Git 2.14.x/2.15(2017 年第四季度)的 2017 年更新git imap-send
仍将不断发展。
请参阅Nicolas Morey-Chaisemartin ( )的提交 dbba42b、提交 19079b3、提交 690307f、提交 200bc38(2017 年 9 月 14 日) 。(由Junio C Hamano 合并 -- --在提交 b67f154中,2017 年 9 月 25 日)nmorey
gitster
"
git imap-send
" 有我们自己的协议实现,也可以使用更新libCurl
的imap
协议支持。
更新后者,使其可以使用凭证子系统,然后使其成为使用的默认选项,这样我们最终可以弃用并删除前者。
使用 Git 2.30.1(2021 年第一季度)git send-email
更新了文档。
请参阅Vasyl Vavrychuk ( ) 的提交 155067a(2021 年 1 月 7 日)。(由Junio C Hamano 合并 -- --在提交 788f488中,2021 年 1 月 15 日)vvavrychuk
gitster
git-send-email.txt
: 提到使用 Gmail 的应用程序访问不太安全签字人:Vasyl Vavrychuk
签字人:Denton Liu
谷歌可能已经改变了 Gmail 的安全性,如果没有两因素身份验证,现在需要明确启用不太安全的应用程序访问,否则发送电子邮件会失败,并显示:
5.7.8 Username and Password not accepted. Learn more at 5.7.8 https://support.google.com/mail/?p=BadCredentials
(谷歌:“我无法登录我的电子邮件客户端”)
记录完成这项工作所需的步骤。[dl:清理提交消息并将建议合并到补丁中。]
git send-email
现在在其手册页中包含:
如果您在 Gmail 帐户上设置了多重身份验证,您将
git send-email
现在在其手册页中包含:
如果您没有在 Gmail 帐户上设置多重身份验证,则需要允许安全性较低的应用访问。访问 https://myaccount.google.com/lesssecureapps以启用它。