当我使用 Git 克隆带有 HTTP 和用户密码的远程存储库时,是否可以在 Windows 上使用 .netrc 文件?
.netrc是否可以在 Windows 上使用文件?
.netrc
是:您必须:
%HOME%
_netrc
如果您使用的是 Windows 7/10,请在CMD会话中键入:
CMD
setx HOME %USERPROFILE%
并将%HOME%设置为“ C:\Users\"username"”。 去那个文件夹 ( cd %HOME%) 并创建一个名为 ‘ _netrc‘的文件
C:\Users\"username"
cd %HOME%
注意:同样,对于 Windows,您需要一个 ‘ _netrc‘ 文件, 而不是 一个 ‘ .netrc‘ 文件。
它的内容非常标准(<examples>用你的值替换):
<examples>
machine <hostname1> login <login1> password <password1> machine <hostname2> login <login2> password <password2>
卢克在评论中提到:
在 Windows 7 上使用最新版本的 msysgit,我不需要设置HOME环境变量。_netrc仅文件就可以解决问题。
HOME
这确实是我在“尝试”中提到的“ installgithub,.sshdir notthere”: git-cmd.bat包含在msysgit中确实设置了%HOME%环境变量:
install
.ssh
git-cmd.bat
@if not exist "%HOME%" @set HOME=%HOMEDRIVE%%HOMEPATH% @if not exist "%HOME%" @set HOME=%USERPROFILE%
鐖卞浗?
但是,我回答说它netrc是由 使用的curl,并且适用于 HTTP 协议,如本例所示(在页面中查找 ‘ netrc‘):。此处也与 HTTP 协议一起使用:“ _netrc/.netrc替代cURL”。
netrc
curl
cURL
在 Windows 上支持with 的一个常见陷阱netrc是,如果源 https url 指定用户名,git 将绕过使用它。
例如,如果您的.git/config文件包含:
.git/config
[遥远的“起源”] fetch = +refs/heads/*:refs/remotes/origin/* 网址 = https://bob@code.google.com/p/my-project/
Git 不会通过_netrc, 解析您的凭据来解决此问题,请删除您的用户名,如下所示:
[遥远的“起源”] fetch = +refs/heads/*:refs/remotes/origin/* 网址 = https://code.google.com/p/my-project/
替代解决方案:使用 git 版本 1.7.9+ (2012 年 1 月):Mark Longair的这个答案详细说明了 凭证缓存机制 , 它还 允许您 不 以纯文本形式存储密码,如下所示。
使用Git 1.8.3(2013 年 4 月):
您现在可以使用 加密的 .netrc (带有gpg)。 在 Windows 上:( %HOME%/_netrc,_而不是 ‘ .’)
gpg
%HOME%/_netrc
_
.
添加了与文件交互的 新只读凭证助手 (在 中)。contrib/``.netrc/.authinfo
contrib/``.netrc/.authinfo
该脚本将允许您 使用 gpg 加密的 netrc 文件 ,避免将凭据存储在纯文本文件中的问题。
带有.gpg扩展名的文件在解析前会被 GPG 解密。 多个-f参数都可以。它们按顺序处理,找到的第一个匹配条目通过凭证帮助协议返回。 如果没有-f给出选项,则按此顺序使用主目录中的.authinfo.gpg、.netrc.gpg、.authinfo和文件。.netrc
带有.gpg扩展名的文件在解析前会被 GPG 解密。 多个-f参数都可以。它们按顺序处理,找到的第一个匹配条目通过凭证帮助协议返回。
.gpg
-f
如果没有-f给出选项,则按此顺序使用主目录中的.authinfo.gpg、.netrc.gpg、.authinfo和文件。.netrc
.authinfo.gpg
.netrc.gpg
.authinfo
要启用此凭证助手:
git config credential.helper '$shortname -f AUTHFILE1 -f AUTHFILE2'
(请注意,Git 会git-credential-在助手名称前加上“”并在路径中查找它。)
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'
使用 Git 2.18+(2018 年 6 月),您现在可以自定义用于解密加密.netrc文件的 GPG 程序。
请参阅Luis Marsano (`)的](https://github.com/)[提交 786ef50](https://github.com/git/git/commit/786ef50a23cbd0e93d1e41982cfaba76801ed885)和[提交 f07eeed](https://github.com/git/git/commit/f07eeed123b8880b1723b1ea9d6d6f41cfb34532)(2018 年 5 月 12 日) 。(由[Junio C Hamano 合并 -- ](https://github.com/gitster)[\--](https://github.com/gitster)在[提交 017b7c5](https://github.com/git/git/commit/017b7c52fc00897c72f6c4808ded43c4c5f9c5b8)中,2018 年 5 月 30 日)[](https://github.com/) [gitster`
`)的](https://github.com/)[提交 786ef50](https://github.com/git/git/commit/786ef50a23cbd0e93d1e41982cfaba76801ed885)和[提交 f07eeed](https://github.com/git/git/commit/f07eeed123b8880b1723b1ea9d6d6f41cfb34532)(2018 年 5 月 12 日) 。(由[Junio C Hamano 合并 -- ](https://github.com/gitster)[\--](https://github.com/gitster)在[提交 017b7c5](https://github.com/git/git/commit/017b7c52fc00897c72f6c4808ded43c4c5f9c5b8)中,2018 年 5 月 30 日)[](https://github.com/) [
git-credential-netrc: 接受gpg选项 git-credential-netrc``gpg无论 gpg.program 选项如何,都被硬编码为使用 ‘ ‘ 解密。 这是像 Debian 这样的发行版上的一个问题,它把现代 GnuPG 称为别的东西,比如 ‘ gpg2‘
git-credential-netrc
git-credential-netrc``gpg无论 gpg.program 选项如何,都被硬编码为使用 ‘ ‘ 解密。 这是像 Debian 这样的发行版上的一个问题,它把现代 GnuPG 称为别的东西,比如 ‘ gpg2‘
git-credential-netrc``gpg
gpg2