注意:虽然描述的用例是关于在项目中使用子模块,但同样适用于git cloneHTTP上的存储库的常规.
我在Git控制下有一个项目.我想添加一个子模块:
git submodule add http://github.com/jscruggs/metric_fu.git vendor/plugins/metric_fu
Run Code Online (Sandbox Code Playgroud)
但我明白了
...
got 1b0313f016d98e556396c91d08127c59722762d0
got 4c42d44a9221209293e5f3eb7e662a1571b09421
got b0d6414e3ca5c2fb4b95b7712c7edbf7d2becac7
error: Unable to find abc07fcf79aebed56497e3894c6c3c06046f913a under http://github.com/jscruggs/metri...
Cannot obtain needed commit abc07fcf79aebed56497e3894c6c3c06046f913a
while processing commit ee576543b3a0820cc966cc10cc41e6ffb3415658.
fatal: Fetch failed.
Clone of 'http://github.com/jscruggs/metric_fu.git' into submodule path 'vendor/plugins/metric_fu'
Run Code Online (Sandbox Code Playgroud)
我设置了HTTP_PROXY:
c:\project> echo %HTTP_PROXY%
http://proxy.mycompany:80
Run Code Online (Sandbox Code Playgroud)
我甚至为http代理设置了全局Git:
c:\project> git config --get http.proxy
http://proxy.mycompany:80
Run Code Online (Sandbox Code Playgroud)
有没有人获得HTTP提取以始终通过代理工作?真正奇怪的是GitHub上的一些项目工作正常(awesome_nested_set例如),但其他项目一直都失败(例如rails).
我已经使用git-svn几个月了,作为我公司的SVN存储库的接口.
然而,大约一周前,我的公司改变了他们的政策,只有通过Cisco VPN连接才能访问SVN.
我在Linux Mint VM上连接到VPN没问题(这是我编码的地方),但是当我运行git svn dcommit签入代码更改时,我现在无法再通过身份验证.
我试过了:
rm -rf ~/.subversion,摆脱任何保存的SVN身份验证凭据并强制它采取新的,但这似乎没有任何影响,也没有提示我新的凭据,令人惊讶.git svn clone以启动到SVN存储库的新链接,但具有相同的身份验证失败.这是我所看到的运行时,git svn dcommit或git svn clone:
$ git svn dcommit
Committing to https://<redacted>:2443/svn/LS/branches/PRODUCTION-SUPPORT-1/ls-policygen ...
WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-wCQwzG/pkcs11: No such file or directory
Authorization failed: OPTIONS of 'https://<redacted>:2443/svn/LS/branches/PRODUCTION-SUPPORT-1/ls-policygen': authorization failed: Could not authenticate to server: ignored NTLM challenge, rejected Basic challenge (https://<redacted>:2443) at /usr/local/libexec/git-core/git-svn line 943
Run Code Online (Sandbox Code Playgroud)
该gnome-keyring警告一直存在,并且被要求VPN之前,从来没有停止过的提交.
我正在尝试从需要NTLM身份验证的代理后面的Windows机器访问Github上的存储库.SSH和git://协议都不是直接可用的,所以我试图通过代理使用HTTPS.
在没有密码的NTLM代理的帮助下?我已经能够curl使用msysgit提供的二进制文件与代理一起使用:
curl -U : --proxy-ntlm --proxy xxx.xxx.xx.xx:8080 https://github.com
Run Code Online (Sandbox Code Playgroud)
这是成功的并返回Github主页.
但是,我发现了一篇来自2010年2月Proxying Git的文章(强调我的):
不幸的是,curl似乎总是使用代理进行基本身份验证.如果您的代理需要其他东西,可能是Windows网络的NTLM,那么您就遇到了问题.Curl用于处理所有http传输细节,这确实支持NTLM身份验证方法,但我知道没有方法可以将必要的选项传递给curl.Git通过其库绑定使用curl,因此不应该只使用包装器脚本替换curl可执行文件.
我知道core.gitproxyGit配置中的选项,但似乎只适用于git://协议.同样,该http.proxy选项设置代理的地址,但无法提供适当的卷曲选项.
我在这里看到很多关于git和代理主题的问题,但没有一个能解决我的问题.我正在从Bitbucket克隆一个git存储库.从我的家庭网络一切正常,但挂起工作,我们使用代理与NTLM身份验证.请参阅git clone命令的输出:
$ git clone https://my_user@bitbucket.org/my_user/my_project.git --verbose
Cloning into 'my_project'...
Password for 'https://my_user@bitbucket.org':
POST git-upload-pack (174 bytes)
remote: Counting objects: 548, done.
remote: Compressing objects: 100% (367/367), done.
remote: Total 548 (delta 216), reused 0 (delta 0)
Receiving objects: 100% (548/548), 5.28 MiB | 533 KiB/s, done.
Resolving deltas: 100% (216/216), done.
Run Code Online (Sandbox Code Playgroud)
git clone命令总是挂起"Resolving deltas".
我的设置:
代理配置:
$git config --global http.proxy http://MY_DOMAIN\\\my_user:my_password@http-proxy:8080
Run Code Online (Sandbox Code Playgroud)似乎这个问题与git对象大小有某种关系,因为当我只在我的存储库中存在少量文件时,git clone就开始工作了.
我在代理后面工作,我无法访问github.com.我读过cntlm可以解决这个问题.我仍然在努力填写代理信息.
所以我的问题是,如何指向Git使用cntlm绕过代理?
像许多人一样,我试图从公司代理的后面访问github.com.
显然*curl(通过libcurl)现在包括对NTLM代理身份验证的GSSAPI支持,而无需手动泄露用户名和密码.
由于git客户端使用libcurl,我认为这可以通过git访问.
如何使用git客户端访问它?
(*)请参见没有密码的NTLM代理?,讨论ntlm代理身份验证而不提供密码.