在代理服务器下使用Git

10

我在代理后面。要让 git 工作,我需要添加

proxy = http://username:password@proxy.at.your.org:8080

.gitconfig文件。

由于usernamepassword是我的系统凭据,这种解决方案很糟糕,因为我必须将它们存储为cleartext明文。

我正在使用Google Chrome,在那里我不需要设置任何代理设置,因为它使用系统代理设置。

如何在git中实现这一点?


注意:从git 2.8版本(2016年3月)开始,您将能够使用常规的git凭据助手来获取与代理用户登录相关联的密码。请参阅下面我编辑过的答案 - VonC
1个回答

10

更新于2016年2月:

使用git 2.8(2016年3月),您不必在url中明文嵌入密码。

参见 commit 372370fcommit ef97639(2016年1月26日)由Knut Franke(“”)提交。
帮助者:Junio C Hamano(gitsterEric Sunshine(sunshinebell28Elia Pinto(devzero2000
(由Junio C Hamano -- gitster --合并于commit 30f302f,2016年2月3日)

http: 使用凭证 API 处理代理身份验证

目前,将代理凭据传递给 curl 的唯一方法是将它们包含在代理 URL 中。通常,这意味着它们最终会以某种方式(通过包含在~/.gitconfig、shell 配置文件或历史记录中)未加密地存储在磁盘上。
由于代理身份验证通常使用域用户,因此凭据可能具有安全敏感性;因此,需要更安全的传递凭据的方式。

如果配置的代理包含用户名但不包含密码,请查询凭证 API 获取密码。此外,确保我们正确批准/拒绝代理凭据。

除了 curl 理解的语法之外,还可以指定一个只有用户名没有密码的代理字符串,在这种情况下,git 将尝试以与其他凭据相同的方式获取密码。
有关详细信息,请参见gitcredentials
语法如下:

[protocol://][user[:password]@]proxyhost[:port]

这可以在每个远程基础上被覆盖;请参阅remote.<name>.proxy

更新于2015年10月

自 git 1.8.0提交7bcb747以来,默认的Windows凭据助手是wincred,它是一个与Windows凭据管理器交互的git凭据助手。

 git config --global credential.helper wincred

原始回答(2013年3月):

您可以在Windows上使用credential helper (git1.7.9+),例如git-credential-winstore,以存储您的凭据。
您将使用'git config --global credential.helper winstore'进行声明。
然后,您可以声明代理而不必输入用户名和密码:

git config --global http.proxy http://proxy.server.com:8080

尽管我更喜欢使用环境变量http_proxyhttps_proxy,

另请参见 "git: 'credential-cache'不是git命令"



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接