当我使用Git克隆带有HTTP和用户密码的远程存储库时,是否可以在Windows上使用.netrc文件?
是否可以在Windows上使用
.netrc
文件?
是的:您必须:
%HOME%
(pre-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://[email protected]/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(使用qazxsw poi)。
在Windows上:qazxsw poi(gpg
,而不是'qazxsw poi')
添加了与
%HOME%/_netrc
文件交互的_
(在.
中)。
该脚本允许您使用gpg加密的netrc文件,避免将凭据存储在纯文本文件中的问题。
具有new read-only credential helper扩展名的文件将在解析之前由GPG解密。 多个
contrib/
参数都可以。它们按顺序处理,找到的第一个匹配条目通过凭证帮助程序协议返回。如果没有给出
.netrc/.authinfo
选项,则您的主目录中的.gpg
,-f
,-f
和.authinfo.gpg
文件将按此顺序使用。
要启用此凭据帮助程序:
.netrc.gpg
(注意,Git会将“
.authinfo
”添加到帮助程序名称并在路径中查找它。)
.netrc
查看“git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
”的完整示例
使用Git 2.18 +(2018年6月),您现在可以自定义用于解密加密的git-credential-
文件的GPG程序。
参见# 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
,.netrc
(2018年5月12日)。
(commit 786ef50于2018年5月30日在commit f07eeed合并)
Luis Marsano (``):接受Junio C Hamano --
gitster
--选项无论gpg.program选项如何,commit 017b7c5都用'
git-credential-netrc
'硬编码解密。 这是像Debian这样的分布上的问题,它将现代GnuPG称为其他东西,比如'gpg
'
您还可以安装git-credential-netrc
以在Windows凭据管理器而不是gpg
中保存Git密码。这是一种更安全的密码存储方式。
这将让Git使用gpg2
在HTTPS上进行身份验证:
_netrc
。.netrc
的环境变量(使用控制面板中的System选项设置系统范围的环境变量。根据Windows的版本,您可能需要选择“Advanced Options”。)。_netrc
文件中的密码不能包含空格(引用密码不起作用)。我发布了一种使用c:\Users\<username>
从网站www.course.com下载资料的方法。
如果有人打算使用coursera-dl在www.coursera.com上下载开放级资料,那么在Windows操作系统上,有人想要使用类似“Unix操作系统”中的“.netrc”这样的文件来添加为方便起见,选择HOME=%USERPROFILE%
而不是_netrc
。他/她可以这样做:
_netrc
(请参阅-n
)。它会将-U <username> -P <password>
环境变量保存为setx HOME %USERPROFILE%
。HOME
.NOTE:没有任何后缀。内容如下:C:\Users\"username"
C:\Users\"username"
之类的命令下载课程资料。更多关于_netrc
的coursera-dl选项详细信息。