How to use .netrc file on windows to save user and password

当我使用Git克隆具有http和用户密码的远程存储库时,是否可以在Windows上使用.netrc文件?


Update April 2013, git 1.8.3:

You now can use an encrypted .netrc (with gpg).
On Windows: %HOME%/_netrc ( _ , not ' . ')

A new read-only credential helper (in contrib/ ) to interact with the .netrc/.authinfo files has been added.

That script would allow you to use gpg-encrypted netrc files , avoiding the issue of having your credentials stored in a plain text file.

Files with the .gpg extension will be decrypted by GPG before parsing.
Multiple -f arguments are OK. They are processed in order, and the first matching entry found is returned via the credential helper protocol.

When no -f option is given, .authinfo.gpg , .netrc.gpg , .authinfo , and .netrc files in your home directory are used in this order.

To enable this credential helper:

git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'

(Note that Git will prepend " git-credential- " to the helper name and look for it in the path.)

# 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'

See a full example at "Is there a way to skip password typing when using https:// github "


Update late 2012, With git version 1.7.9+ : This answer from Mark Longair details the credential cache mechanism which allows you to not store your password in plain text as shown below.


(Original answer)

You must define:

  • environment variable %HOME%
  • put a _netrc file in %HOME%
  • If you are using Windows 7

    run the cmd type this:

    setx HOME %USERPROFILE%
    

    and the %HOME% will be set to ' C:Users"username" '

    then go to it and make a file called ' _netrc '

    Note: for Windows, you need a ' _netrc ' file, not a ' .netrc '.

    Its content is quite standard (Replace the with your values):

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

    Luke mentions in the comments:

    Using the latest version of msysgit on Windows 7, I did not need to set the HOME environment variable. The _netrc file alone did the trick.

    This is indeed what I mentioned in "Trying to “ install ” github, .ssh dir not there":
    git-cmd.bat included in msysgit does set the %HOME% environment variable:

    @if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH%
    @if not exist "%HOME%" @set HOME=%USERPROFILE%
    

    爱国者 believes in the comments that "it seems that it won't work for http protocol"

    However, I answered that netrc is used by curl, and works for http protocol, as shown in this example (look for 'netrc' in the page): . Also used with http protocol here: " _netrc / .netrc alternative to cURL ".


    A common trap with with netrc support on Windows is that git will bypass using it if an origin https url specifies a user name.

    For example, if your .git/config file contains:

    [remote "origin"]
         fetch = +refs/heads/*:refs/remotes/origin/*
         url = https://bob@code.google.com/p/my-project/
    

    Git will not resolve your credentials via _netrc , to fix this remove your username, like so:

    [remote "origin"]
         fetch = +refs/heads/*:refs/remotes/origin/*
         url = https://code.google.com/p/my-project/
    

    You can also install Git Credential Manager for Windows to save Git passwords in Windows credentials manager instead of netrc. This is a more secure way to store password


    This will let git authenticate on https using .netrc

  • The file should be named _netrc and located in c:Users<username>
  • You will need to set an environment variable called HOME=%USERPROFILE% (Set system-wide environment variables using the System option in the control panel. Depending on the version of Windows, you may need to select "Advanced Options")
  • The password stored in the _netrc file cannot contain spaces (quoting the password will not work)
  • 链接地址: http://www.djcxy.com/p/22062.html

    上一篇: SSL证书被拒绝,试图通过HTTPS在防火墙后面访问GitHub

    下一篇: 如何在Windows上使用.netrc文件来保存用户和密码