如何在Git URL中转义密码中的`@`?

3

借口:
我看到了这个:Escape @ character in git proxy password 但它是关于http.proxy参数的,而p%4055对于url参数对我来说不起作用。

我的问题:
我使用git版本1.7.1
我的密码库是:p@55
我使用gitlab服务器,并在客户端上使用centos
.git/config文件中,我已经像这样设置:

[remote "origin"]
url = http://user:p@55@domain.com:port/repo.git

但是当我拉它时,出现了这个错误:
error: Couldn't resolve host '55:domain.com' while accessing ...

我知道转义字符@,但是:

我尝试输入p\@55,结果出现了错误:

fatal: bad config file line 8 in .git/config

我尝试了 p%4055,出现了以下错误:

error: The requested URL returned error: 401 while accessing ...

使用 http://user:p%4055@domain.com:port/repo.git - Tim Biegeleisen
@TimBiegeleisen 我明白了,但是这只适用于 http.proxy 参数,我尝试使用 %40 作为 url 参数却不起作用。 - Nabi K.A.Z.
@TimBiegeleisen,您可以看到我的问题最后尝试了“p%4055”,但是没有起作用! - Nabi K.A.Z.
你使用的 Git 版本是什么?(本地和远程服务器上都是) - VonC
使用SSH密钥(无需密码或使用ssh-agent)呢? - zigarn
显示剩余2条评论
3个回答

7
我刚刚将git版本从1.7.1升级至2.11.1,这对我来说是有效的:
url = http://user:p%4055@domain.com:port/repo.git

3

尝试使用@符号的URL编码值-(%40)。

您的情况下的示例:

URL = http://user:p%4055@domain.com:port/repo.git

编辑:

如果上述方法不起作用,请使用以下方法:

sshpass -p密码git clone ssh://username@onboard.com/srv/git/repo


正如我在关于p%4055的问题结尾所说,给我一个错误... 所以,就像我说的那样,我想要git pull,而不是clone!因此我不想在CLI中使用它,我想把它放在配置文件中。 - Nabi K.A.Z.
我添加了一个名为sshpass的方法。 - Shivang Agarwal
我想将其放入配置文件中,不想在CLI下使用。而且,我想执行git pull而不是git clone!因此使用http协议而不是ssh.... - Nabi K.A.Z.
sshpass -p p@55 git pull 已经可以工作。但是正如我所说,我想配置git配置文件。其中一个原因是密码会在历史记录中显示给任何人看到。 - Nabi K.A.Z.


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