Eu tenho git proxy config como 'http.proxy = http: // userId: pwd @ 123 @ipaddress: port', mas ao clonar um projeto remoto, estou recebendo um erro como
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
Como escapar do caractere '@' na senha?
Observação: não consigo alterar a senha.
Nota (novembro de 2013)
Codificar o url (especialmente qualquer caractere especial em uma senha) é a solução certa.
O
.netrc
mencionado abaixo é apenas para repo url remoto, não para o proxy usado para resolver o referido repo url remoto.Para a referida codificação, consulte " Porcentagem de codificação ":
Resposta original (maio de 2011)
Dois comentários:
ter uma senha para um servidor acessado com http (não https) é ... estranho. A senha não é criptografada durante as comunicações entre o cliente e o servidor;
você pode configurar um
.netrc
(ou_netrc
para Windows) em seu$HOME
, com o seguinte conteúdoO curl usado pelo Git nos bastidores lidaria perfeitamente com a codificação,
@
ou não@
.fonte
http://123@ipaddress:port/...
como um endereço de clonagem, sem ter que adicionar informações de usuário e senha.URL codifica quaisquer caracteres incomuns.
Lista de códigos de url.
No meu arquivo de configuração git, codifiquei "apenas" o nome de usuário, por exemplo:
fonte
Por exemplo, sua senha armazenada na variável de ambiente
GIT_PASSWORD
, nome de usuário -GIT_USERNAME
, então:Explicação de:
echo -n $GIT_PASSWORD | hexdump -v -e '"x" 1/1 "%02X"' | tr x %
$GIT_PASSWORD
<-hello
hello
<-x68x65x6Cx6Cx6F
x68x65x6Cx6Cx6F
<-%68%65%6C%6C%6F
fonte
Você tem que codificar por cento | codifique os caracteres especiais. Por exemplo, em vez disso:
você escreve isto:
Então
@
é substituído por%40
.fonte