当我使用Git克隆带有HTTP和用户密码的远程存储库时,是否可以在Windows上使用.netrc文件?
答案 0 :(得分:191)
是否可以在Windows上使用
.netrc
文件?
是的:您必须:
%HOME%
(Git 2.0之前,Git 2.0 +不再需要)_netrc
%HOME%
个文件
如果您使用的是Windows 7/10,请在CMD
会话中输入:
setx HOME %USERPROFILE%
并且%HOME%
将设置为“C:\Users\"username"
”
转到该文件夹(cd %HOME%
)并制作名为“_netrc
”
注意:对于Windows,您需要一个“_netrc
”文件,不一个“.netrc
”文件。
其内容非常标准(将<examples>
替换为您的值):
machine <hostname1>
login <login1>
password <password1>
machine <hostname2>
login <login2>
password <password2>
Luke在评论中提及:
在Windows 7上使用最新版本的msysgit,我不需要设置
HOME
环境变量。仅_netrc
文件就可以了。
这确实是我在“Trying to “install
” github, .ssh
dir not there”中提到的:
msysgit中包含的git-cmd.bat
确实设置了%HOME%
环境变量:
@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
@if not exist "%HOME%" @set HOME=%USERPROFILE%
爱国者相信评论“它似乎不适用于http协议”
但是,我回答netrc
使用了curl
,并且适用于HTTP协议,如this example所示(在页面中查找“netrc
”) :。此处也与HTTP协议一起使用:“_netrc
/.netrc
alternative to cURL
”。
在Windows上具有netrc
支持的常见陷阱是,如果源https url指定用户名,git将绕过它。
例如,如果您的.git/config
文件包含:
[remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = https://bob@code.google.com/p/my-project/
Git无法通过_netrc
解析您的凭据,要解决此问题,请删除您的用户名,如下所示:
[remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = https://code.google.com/p/my-project/
替代解决方案:使用 git版本1.7.9 + (2012年1月):来自This answer的Mark Longair详细说明了credential cache mechanism 还允许您不以纯文本形式存储您的密码,如下所示。
Git 1.8.3(2013年4月):
您现在可以使用加密.netrc (使用gpg
)。
在Windows上:%HOME%/_netrc
(_
,而非“.
”)
已添加 new read-only credential helper (在
contrib/
中)与.netrc/.authinfo
文件进行互动。
该脚本允许您使用gpg加密的netrc文件,避免将您的凭据存储在纯文本文件中。
具有
.gpg
扩展名的文件将在解析前由GPG解密 多个-f
参数都可以。它们按顺序处理,找到的第一个匹配条目通过凭证帮助程序协议返回。如果未给出
-f
选项,则您的主目录中的.authinfo.gpg
,.netrc.gpg
,.authinfo
和.netrc
文件将按此顺序使用。< / p>
启用此凭据帮助程序:
git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
(请注意,Git会将“
git-credential-
”添加到帮助程序名称并在路径中查找。)
# and if you want lots of debugging info:
git config credential.helper '$shortname -f AUTHFILE -d'
#or to see the files opened and data found:
git config credential.helper '$shortname -f AUTHFILE -v'
请参阅“Is there a way to skip password typing when using https:// github
”
使用Git 2.18 +(2018年6月),您现在可以自定义用于解密加密的.netrc
文件的GPG程序。
commit 786ef50见commit f07eeed,Luis Marsano (``)(2018年5月12日)
(由Junio C Hamano -- gitster
--合并于commit 017b7c5,2018年5月30日)
git-credential-netrc
:接受gpg
选项
git-credential-netrc
被硬编码为“gpg
”解密,无论如何 gpg.program选项。
这是像Debian这样的分布上的问题,它将现代GnuPG称为其他内容,例如“gpg2
”
答案 1 :(得分:34)
您还可以安装Git Credential Manager for Windows以在Windows凭据管理器中保存Git密码,而不是_netrc
。这是一种更安全的密码存储方式。
答案 2 :(得分:9)
这将允许Git使用.netrc
在HTTPS上进行身份验证:
_netrc
,位于c:\Users\<username>
。HOME=%USERPROFILE%
的环境变量(使用控制面板中的System选项设置系统范围的环境变量。根据Windows的版本,您可能需要选择&#34; Advanced选项&#34;。)_netrc
文件中的密码不能包含空格(引用密码不起作用)。答案 3 :(得分:1)
我发布了一种使用_netrc
从网站www.course.com下载资料的方法。
如果有人打算使用该课程在www.coursera.com上下载开放课程的资料,那么在Windows操作系统上,有人想要使用像#34; .netrc&#34;这样的文件。为了方便起见,在类Unix操作系统中添加选项-n
而不是-U <username> -P <password>
。他/她可以这样做:
检查Windows操作系统上的主路径:setx HOME %USERPROFILE%
(请参阅VonC's answer)。它会将HOME
环境变量保存为C:\Users\"username"
。
找到目录C:\Users\"username"
并创建文件名_netrc
。注意:没有任何后缀。
内容如下:machine coursera-dl login <user> password <pass>
使用coursera-dl -n --path PATH <course name>
之类的命令下载课程资料。有关this page的更多课程选项详细信息。