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

2024-03-02

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


是否可以使用.netrcWindows 上的文件?

是的:您必须:

  • 定义环境变量%HOME%(Git 2.0 之前的版本,Git 2.0+ 不再需要)
  • put a _netrc文件输入%HOME%

如果您使用的是 Windows 7/10,CMD会话,类型:

setx HOME %USERPROFILE%

and the %HOME%将被设置为 'C:\Users\"username"'.
转到那个文件夹(cd %HOME%)并创建一个名为 '_netrc'

注意:同样,对于 Windows,您需要一个 '_netrc' file, not a '.netrc' file.

其内容相当标准(替换<examples>与你的价值观):

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

Luke https://stackoverflow.com/users/197503/luke评论中提到:

在Windows 7上使用最新版本的msysgit,我不需要设置HOME环境变量。这_netrc仅文件就达到了目的。

这确实是我在《尝试去 ”install” github,.ssh目录不存在 https://stackoverflow.com/questions/8514097/trying-to-install-github-ssh-dir-not-there/8531157#8531157":
git-cmd.bat https://github.com/msysgit/msysgit/blob/master/git-cmd.bat包含在 msysgit 中确实设置了%HOME%环境变量:

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

爱国者相信评论中“好像对http协议不起作用”

然而我回答说netrc被使用curl,适用于HTTP协议,如图这个例子 http://maymay.net/blog/2008/08/08/how-to-use-http-basic-authentication-with-git/(寻找 'netrc' 在页面中): .这里也与 HTTP 协议一起使用:“_netrc/.netrc替代cURL https://stackoverflow.com/questions/5193643/netrc-netrc-alternative-to-curl".


常见的陷阱 withnetrcWindows 上的支持是,如果原始 https url 指定了用户名,则 git 将绕过使用它。

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



[remote "origin"]
     fetch = +refs/heads/*:refs/remotes/origin/*
     url = https://[email protected] /cdn-cgi/l/email-protection/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 月):这个答案 https://stackoverflow.com/a/5343146/6309 from 马克·朗吉尔 https://stackoverflow.com/users/223092/mark-longair详细介绍了凭证缓存机制 http://git-scm.com/docs/git-credential-cache which also允许您not以纯文本形式存储您的密码,如下所示。


With git 1.8.3 https://github.com/git/git/blob/master/Documentation/RelNotes/1.8.3.txt#L119-L120(2013年4月):

您现在可以使用加密的.netrc (with gpg).
在 Windows 上:%HOME%/_netrc (_, not '.')

A 新的只读凭据助手 https://github.com/git/git/blob/master/contrib/credential/netrc/git-credential-netrc (in contrib/)与交互.netrc/.authinfo文件已添加。

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

文件与.gpg扩展名在解析之前会被 GPG 解密。
多种的-f论据没问题。它们按顺序进行处理,并通过凭证辅助协议返回找到的第一个匹配条目。

When no -f给出了选项,.authinfo.gpg, .netrc.gpg, .authinfo, and .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 https://stackoverflow.com/a/18362082/6309"


使用 Git 2.18+(2018 年 6 月),您现在可以自定义用于解密加密的 GPG 程序.netrc file.

See commit 786ef50 https://github.com/git/git/commit/786ef50a23cbd0e93d1e41982cfaba76801ed885, commit f07eeed https://github.com/git/git/commit/f07eeed123b8880b1723b1ea9d6d6f41cfb34532 (12 May 2018) by Luis Marsano (``) https://github.com/.
(Merged by Junio C Hamano -- gitster -- https://github.com/gitster in commit 017b7c5 https://github.com/git/git/commit/017b7c52fc00897c72f6c4808ded43c4c5f9c5b8, 30 May 2018)

git-credential-netrc: 接受gpg option

git-credential-netrc被硬编码以解密 'gpg' 不管 gpg.program 选项。
这是像 Debian 这样的发行版上的一个问题,这些发行版将现代 GnuPG 称为其他名称,例如“gpg2'

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git - 如何在 Windows 上使用 .netrc 文件保存用户和密码 的相关文章

  • 在 .NET 中使用 NTFS 压缩来压缩文件夹

    我想在 NET 中使用 NTFS 压缩来压缩文件夹 我发现这个帖子 http bytes com groups net c 262874 making folder compressed 但它不起作用 它抛出异常 无效参数 Director
  • 如何在 git 中使用我的更改进行合并?

    在 git 中合并时如何强制 我的更改 有人将所有 bin 目录放入 git 中 现在我遇到了可怕的合并冲突 现在它说 当你解决了这个问题后 运行 git rebase 继续 如果你 宁愿跳过这个补丁 而是运行 git rebase ski
  • git pull origin master 返回致命错误:无效的 refspec

    问题是这样的 每当我这样做时 git pull https github com username reponame github io git 接下来是网址 我没有遇到任何问题 但是当我这样做时 git pull origin maste
  • 如何在 Windows Docker 容器中启动 PowerShell (x86)?

    我正在尝试从 PowerShell 启动 Windows Docker 容器中的 PowerShell x86 但它不会启动新的 shell 我正在从 AWS Windows EC2 运行 DockerWindows Server 2019
  • 如何将“develop”分支推送到远程“origin”?

    当我做git flow init它创造了一个master and develop分支机构 当我添加遥控器时git remote add origin email protected cdn cgi l email protection Ne
  • 简单的Java程序插入USB热点后速度慢100倍

    我有以下Java程序 class Main public static void main String args throws java io IOException long start System nanoTime java io
  • 如何在 QT 安装程序框架中区分每用户安装与系统范围安装?

    我正在使用一些名为 pgModeler 的应用程序 它的当前版本提供了一个基于 QT 安装程序框架的安装程序 Windows 上该安装程序的问题是它安装每个用户的开始菜单条目 https github com pgmodeler pgmod
  • .NET 进程分配的内存何时释放回 Windows

    设置 NET 在启动时以及在收集后尝试满足分配请求时 分段为每一代的堆 0 1 2 LOH 分配内存 以获得连续的内存块 为每个堆分配的内存可能会随着应用程序 预热 而趋于平稳 但第 2 代和大型对象堆可能除外 在垃圾收集期间 每个堆 0
  • 为什么将多线程应用程序限制在一个核心上会使其运行速度更快?

    我有一个本机多线程Win32用 C 编写的应用程序 大约有 3 个相对繁忙的线程和 4 到 6 个不执行太多操作的线程 当它在正常模式下运行时 在 8 核计算机上 总 CPU 使用率总计约为 15 并且应用程序在大约 30 秒内完成 当我通
  • 你遇到过哪些 git 陷阱?

    我遇到的最糟糕的情况是 git 子模块 我在 github 上有一个项目的子模块 该项目无人维护 我想提交补丁 但无法提交 所以我分叉了 现在子模块指向原始库 而我需要它指向 fork 因此 我删除了旧的子模块 并将其替换为同一提交中新项目
  • 单个分支的 Git 导出

    我在本地的 git 存储库上工作 它有各种分支 例如开发分支 一些用于实验更改的分支等等 当然还有主分支 我想设置一个公共 嗯 确实是一个局域网的东西 最好说 共享 存储库来仅包含主分支 如何导出该分支以便我可以将其复制到目标文件夹 谢谢
  • Python:导航到便携式设备目录 (Windows 7)

    我正在尝试解决我创建的一个问题 https stackoverflow com questions 21381652 python find record time of mp4 movie noredirect 1 comment3234
  • 如何运行“git status”并获取文件名

    如何运行 git status 并只获取文件名而不是长相对路径 的输出git status porcelain旨在易于在脚本中解析 输出完整路径而不是相对路径 无论当前目录位于树中的位置 每行输出由git status porcelain有
  • git commit 保存 vim 文件时出错

    我正在遵循简单的 git 指南nettuts 简易 git 指南 http net tutsplus com tutorials other easy version control with git 我在我的中初始化了一个空的 git 实
  • Magento 外部登录不会创建会话 cookie

    我正在尝试从外部站点替换 Magento 的相当笨拙的 ajax 登录 该网站使用 Magento 作为商店 站点和 magento 商店都有自己的登录信息 因此当用户登录时 两者同步非常重要 这是通过每次页面重新加载时进行 ajax 调用
  • 是否可以使用 Visual Studio 中的 git stash 命令

    我正在使用 Visual Studio 2017 的团队资源管理器来处理git存储库 每次我使用git stash or git stash pop 我需要打开 Git Bash 控制台并导航到我的项目文件夹并运行命令 有什么方法可以隐藏在
  • .gitignore 在提交、推送或到达服务器时起作用吗?

    说我有一个 gitignore忽略所有 class files 当 时这些文件是否远离远程源 我在本地提交 添加我的文件 我的吗git寻找一个 gitignore当使用添加 提交时 并根据它所说的内容 从提交中删除内容 我推动我的承诺 做g
  • Sublime 中的文件内容不会因 Git 分支更改而更改

    如果在 Sublime text 2 中打开一个文件 然后切换到终端中对该文件进行更改的分支 则在通过单击编辑器选择编辑器之前 文件内容不会在 Sublime text 2 中更新 如何自动神奇地改变它 Sublime Text 没有任何内
  • git fatal:无法读取对象 xxx:参数无效

    如果我从远程获取数据 我会收到以下错误 git pull remote Counting objects 85 done remote Compressing objects 100 37 37 done remote Total 85 d
  • 如何删除所有意外添加到git系统的本地文件

    我是 git 系统的新手 我可能犯了一个错误 将我所有的本地文件集成到 git 系统中 当我说出现以下错误时 我使用 vs代码编辑器 并放弃所有更改 Git fatal You are on a branch yet to be born

随机推荐

  • OpenXML:Excel 中自动调整列宽

    我已经编写了使用 OpenXML 生成 Excel 文件的代码 下面是在 Excel 中生成列的代码 Worksheet worksheet new Worksheet Columns columns new Columns int num
  • HistoryRecord 的活动空闲超时?

    W ActivityManager 81 Launch timeout has expired giving up wake lock W ActivityManager 81 Activity idle timeout for Histo
  • log4j:记录包,但不包括其子包

    您好 我想排除某些子包被我的一个记录器记录 因为它们正在被另一个记录器记录 例如 com mysite app logger1 com mysite app news logger2 com mysite app events logger
  • 如何使用 ASP.NET MVC 将字典绑定到一组复选框?

    我的需要是 绑定 Dictionary
  • Maven 的 Jersey 问题 - Shade 插件

    我的问题非常类似于 仅当依赖项组装到单个 jar 中时才会抛出 Jersey 异常 https stackoverflow com questions 12611213 jersey exception only thrown when d
  • 过滤R中所有列包含相同数据的行

    我有一个数据集 要求每个参与者回答一系列问题 有些人对每个问题都给出了相同的回答 我想丢弃这些参与者的数据 但不知道如何去做 我的意思是我可以尝试过滤 区分 但我遇到的问题是大约有 100 个问题 所以 100 列 我不确定使 R 过滤所有
  • 使用PHP 5.5的password_hash和password_verify函数

    假设我想存储用户的密码 这是否是使用 PHP 5 5 的正确方法password hash 函数 或 PHP 5 3 7 的此版本 https github com ircmaxell password compat https githu
  • 我在 Visual Studio 2010 中找不到从工具菜单生成本地资源

    我在网页的设计视图 标记 中 我在工具菜单中找不到 生成本地资源 谁能告诉我如何启用这个工具 查看 aspx 或 ascx 文件时 确保您正在查看 设计 或 拆分 选项卡 而不是 源 选项卡 此外 这篇文章可能会有所帮助 其中部分指出 如果
  • C# 中的 'volatile' 关键字仍然被破坏吗?

    乔 阿尔巴哈里有一个很棒的系列 http www albahari com threading 关于多线程 这是必读的内容 对于任何从事 C 多线程处理的人来说都应该牢记于心 然而 在第 4 部分中 他提到了 volatile 的问题 请注
  • 获取用户信息 Google-PHP-Client 问题?

    首先 我只想说我需要从用户那里获取哪些信息 全名 名字 姓氏 电子邮件地址 主帐户 而不是 google plus com 位置 国家 州 城市 地址 Youtube 用户名 为了获取所有这些信息 我继续下载 安装位于以下位置的 PHP 客
  • 如何创建静态链接共享库

    在我的硕士论文中 我尝试为 ARM Cortex M3 嵌入式系统采用共享库方法 由于我们的目标板没有 MMU 我认为使用 普通 动态共享库是没有意义的 因为 text 是直接从闪存执行的 而 data 在启动时被复制到 RAM 所以我无法
  • MinGW 调试模式下 Qt 应用程序启动缓慢

    我在 Win 7 上使用 Qt Creator 3 1 1 和 Qt 5 3 如果设置了 2 个套件 VC2013 和 MinGW 4 8 1 我的应用程序可以编译 并且可以与两个编译器一起使用 但是当我以 MinGW gdb 调试模式启动
  • 如何使用 sklearn Pipeline 转换项目?

    我有一个简单的 scikit learnPipeline共两个步骤 aTfIdfVectorizer随后是一个LinearSVC 我已经使用我的数据拟合了管道 都好 现在我想使用我的拟合来转换 而不是预测 一个项目pipeline I tr
  • 为 git log 这样的两个字命令创建别名?

    有时我有两个词的命令 例如git log or apt get install我想添加一个默认参数 例如 大多数时候我想添加 abbrev commit参数给我的git log 以及 y参数为apt get install git log
  • 如何动态地将 标签附加到

    标签的特定位置?

    本质上 我正在尝试实现一个在选择时突出显示某些文本的功能 这仅适用于 Google Chrome 浏览器 例如 选型前 p sample text p 从 示例文本 中选择 文本 后 p sample span class state hi
  • oozie Sqoop 操作无法将数据导入到 hive

    我在执行 oozie sqoop 操作时遇到问题 在日志中我可以看到 sqoop 能够将数据导入到临时目录 然后 sqoop 创建 hive 脚本来导入数据 将临时数据导入配置单元时失败 在日志中我没有收到任何异常 下面是我正在使用的 sq
  • MVC 路由捕获文件名作为参数

    我正在尝试使用 MVC 生成一个简单的 WebDAV 服务器 并且我终于达到了需要向用户提供请求的文件的阶段 我设置了一条用于遍历目录结构的路线 webdav path 工作正常 直到该路径以文件名结束为止 此时 IIS 似乎确定它是静态文
  • 带有 php 和 ssl 的本地主机服务器

    我正在寻找允许使用 ssl 启动 php 文件的服务器 我尝试过例如 python 简单服务器 import BaseHTTPServer SimpleHTTPServer import ssl httpd BaseHTTPServer H
  • 如何在Python中创建随机的圆数组而不重叠?

    我想知道如何在Python中创建一些不重叠的圆圈 Let me share a part of my script 在第 55 56 和 57 行中 我打印了坐标 见证了重叠 在每个 for 语句中 我认为我避免了重叠执行诸如二分法 求根方
  • Git - 如何在 Windows 上使用 .netrc 文件保存用户和密码

    当我使用 Git 通过 HTTP 和用户密码克隆远程存储库时 是否可以在 Windows 上使用 netrc 文件 是否可以使用 netrcWindows 上的文件 是的 您必须 定义环境变量 HOME Git 2 0 之前的版本 Git