git代理密码中的转义@字符

问题描述

| 我将git proxy配置为\'http.proxy = http:// userId:pwd @ 123 @ ipaddress:port \',但是在克隆远程项目时,由于
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
如何转义密码中的\'@ \'字符? 请注意:我无法更改密码。     

解决方法

        如果您要在代理url中传递密码,则尝试使用@符号的URL编码值:
http.proxy=http://userId:pwd%40123@ipaddress:port
    ,        注意(2013年11月) 正确的解决方案是对url(尤其是密码中的任何特殊字符)进行编码。 下面提到的“ 2”仅用于远程回购URL,不适用于用于解析所述远程回购URL的代理。 有关所述编码,请参见\“百分比编码\”:   百分比编码(也称为URL编码)是一种在某些情况下在统一资源标识符(URI)中对信息进行编码的机制。尽管它被称为URL编码,但实际上更普遍地在主要的统一资源标识符(URI)集内使用,它既包含统一资源定位符(URL),又包含统一资源名称(URN)。这样,它还用于准备application / x-www-form-urlencoded媒体类型的数据,这在HTTP请求中提交HTML表单数据时经常使用。      百分比编码后的保留字符:
!   #   $    &   \'   (   )   *   +,/   :   ;   =   ?   @   [   ]
%21 %23 %24 %26 %27 %28 %29 %2A %2B %2C %2F %3A %3B %3D %3F %40 %5B %5D
原始答案(2011年5月) 两条评论: 拥有通过http(不是https)访问的服务器的密码很奇怪。客户端和服务器之间的通信未加密密码; 您可以在
$HOME
中设置
.netrc
(对于Windows则为
_netrc
),并包含以下内容     机器ipaddress:port     登录用户名     密码pwd @ Git bbehind场景使用的卷曲可以很好地处理编码,,7ѭ或不no7ѭ。     ,        URL编码任何不寻常的字符。 网址代码列表。
@ character is %40
在我的git配置文件中,我已经对用户名进行了'just \'编码,例如:
https://myemail%[email protected]/api.git
,        例如,您的密码存储在环境变量
GIT_PASSWORD
中,用户名-
GIT_USERNAME
,然后:
git clone http://${GIT_USERNAME}:$(echo -n $GIT_PASSWORD | hexdump -v -e \'\"x\" 1/1 \"%02X\"\' | tr x %)@repository.git
说明:ѭ14 打印密码:
$GIT_REPOSITORY
<--16ѭ 将\'hello \'转换为十六进制:
hello
<-
x68x65x6Cx6Cx6F
将每个\'x \'更改为\'%\':
x68x65x6Cx6Cx6F
<-
%68%65%6C%6C%6F
    ,        您必须进行百分比编码|编码特殊字符。例如。代替这个:
http://foo:B@[email protected]:80
你这样写:
http://foo:B%[email protected]:80
因此,
@
被替换为
%40
。