Git – 如何在Windows上使用.netrc文件来保存用户和密码

当我使用Git克隆一个远程仓库与http和用户密码时,是否有可能在Windows上使用.netrc文件?

更新2013年4月,git 1.8.3 :

你现在可以使用一个加密的.netrc (与gpg)。

添加了一个新的只读凭证助手 (在contrib/ )与.netrc/.authinfo文件进行交互。

该脚本将允许您使用gpg加密的netrc文件 ,避免将凭据存储在纯文本文件中的问题。

解析之前,具有.gpg扩展名的文件将由GPG解密。
多个-f参数是可以的。 它们按顺序处理,找到的第一个匹配条目通过凭证帮助程序协议返回。

如果未指定-f选项, .authinfo.gpg按照以下顺序使用主目录中的.authinfo.gpg.netrc.gpg.authinfo.netrc文件。

要启用此凭证助手:

 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' 

在“ 使用https:// github时有没有办法跳过密码输入 ”


更新于2012年下半年,使用git 1.7.9+版本 : Mark Longair的 这个答案详细说明了凭证缓存机制 ,它允许您以纯文本形式存储密码,如下所示。


(原文答案)

你必须定义:

  • 环境变量%HOME%
  • 把一个_netrc文件放在%HOME%

如果您正在使用Windows 7

运行cmd类型:

 setx HOME %USERPROFILE% 

%HOME%将被设置为“ C:\Users\"username" '

然后去它,并创建一个名为“ _netrc

注意:对于Windows,您需要一个“ _netrc ”文件,而不是“ .netrc ”。

它的内容是相当标准的(用你的值替换):

 machine <hostname1> login <login1> password <password1> machine <hostname2> login <login2> password <password2> 

卢克在评论中提到:

在Windows 7上使用最新版本的msysgit,我不需要设置HOME环境变量。 _netrc文件本身就是个窍门。

这确实是我在“ 试图” 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协议,如本例所示(在页面中查找'netrc'):。 在这里也使用http协议:“ _netrc / .netrc cURL替代 ”。


在Windows上使用netrc支持的一个常见陷阱是,如果源https URL指定用户名,git将绕过使用它。

例如,如果你的.git/config文件包含:

 [远程“起源”]
      fetch = + refs / heads / *:refs / remotes / origin / *
      url = https://bob@code.google.com/p/my-project/

Git不会通过_netrc来解析您的凭证,要解决这个问题,请删除您的用户名,如下所示:

 [远程“起源”]
      fetch = + refs / heads / *:refs / remotes / origin / *
      url = https://code.google.com/p/my-project/

您还可以安装Git Credential Manager for Windows以在Windows凭据管理器中保存Git密码,而不是netrc。 这是一个更安全的方式来存储密码

这将让git在https上使用.netrc进行身份验证

  • 该文件应该命名为_netrc并位于c:\Users\<username>
  • 您将需要设置一个名为HOME=%USERPROFILE%环境变量(使用控制面板中的“系统”选项设置系统范围的环境变量。根据Windows的版本,您可能需要选择“高级选项”)
  • 存储在_netrc文件中的密码不能包含空格(引用密码将不起作用)

发布一个方法使用_netrc从网站www.course.com.I下载材料希望对你有所帮助。

如果有人打算使用coursera-dl在www.coursera.com上下载公开课的资料。 而在WINDOWS操作系统上有人想要使用类似于Unix操作系统的“.netrc”这样的文件来添加选项-n而不是-U -P。为此他可以这样做:

  1. 检查Windows操作系统上的home路径: setx HOME %USERPROFILE% ( 参考:VonC的答案 ),它将把HOME保存为C:\Users\"username"

  2. 找到目录C:\Users\"username"并创建一个文件名_netrc注意:没有任何后缀。 内容如下: machine coursera-dl login <user> password <pass>

  3. 使用命令如coursera-dl -n --path PATH <course name>来下载课程资料。 这个页面的更多课程选项的详细信息。