在git代理密码中退出@字符

我有git代理configuration为“http.proxy = http:// userId: pwd @ 123 @ipaddress:端口”,但克隆一个远程项目时,我得到错误

Cloning into git... error: Couldn't resolve proxy '123@ipaddress' while accessing http://git.kernel.org/pub/scm/git/git.git/info/refs fatal: HTTP request failed 

如何逃避密码中的“@”字符?

请注意:我无法更改密码。

2 Solutions collect form web for “在git代理密码中退出@字符”

如果您在代理url中传递密码,我会尝试使用@符号的URL编码值:

 http.proxy=http://userId:pwd%40123@ipaddress:port 

附注(2013年11月)

对URL进行编码(特别是密码中的任何特殊字符)是正确的解决scheme。
下面提到的.netrc只用于远程repo url,而不是用于parsing远程repo url的代理。

对于所述编码,请参阅“ 百分比编码 ”:

百分比编码(也称为URL 编码 )是在特定情况下对统一资源标识符 (URI)中的信息进行编码的机制。 虽然它被称为URL编码,但实际上,它主要在主要的统一资源标识符 (URI)集合中使用,其中包括统一资源定位符 (URL)和统一资源名称 (URN)。 因此,它也被用于准备application / x-www-form-urlencoded 媒体types的数据 ,正如在HTTP请求中提交HTML 表单数据时经常使用的那样。

百分比编码后的保留字符:

 ! # $ & ' ( ) * + , / : ; = ? @ [ ] %21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D 

原文答复(2011年5月)

两点评论:

  • 用http(不是https)访问服务器的密码是很奇怪的。 在客户端和服务器之间的通信过程中密码不encryption;

  • 你可以在你的$HOME设置一个.netrc (或者Windows的_netrc ),以下内容

    机器IP地址:端口
    loginuserId
    密码pwd @

Git在场景背后使用的curl处理编码就好, @或no @

  • 在Windows下的Git:MSYS或Cygwin?
  • msysGit vs Git for Windows
  • 在GIT bash的Windows安装中更改〜目录的位置
  • git:'credential-cache'不是一个git命令
  • 我的Gitconfiguration中的设置来自哪里?
  • Git Windows命令提示在Git命令中卡住(结束)
  • 无法使用自签名证书在Windows上使用git解决“无法获得本地颁发者证书”
  • Git Bash Shell无法创build符号链接
  • 在Windows上使用符号链接克隆存储库时会发生什么?
  • git:补丁不适用
  • 在Windows上的Git:你如何设置一个mergetool?