J'ai git proxy config comme 'http.proxy = http: // userId: pwd @ 123 @ipaddress: port' mais lors du clonage d'un projet distant, j'obtiens une erreur comme
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
Comment échapper au caractère «@» dans le mot de passe?
Remarque: je ne peux pas changer le mot de passe.
Note (novembre 2013)
Encoder l'url (en particulier tout caractère spécial dans un mot de passe) est la bonne solution.
Ce qui est
.netrc
mentionné ci-dessous est uniquement pour l'URL du dépôt distant, pas pour le proxy utilisé pour résoudre ladite URL du dépôt distant.Pour ledit encodage, voir " Encodage en pourcentage ":
Réponse originale (mai 2011)
Deux remarques:
avoir un mot de passe pour un serveur accédé avec http (pas https) est ... étrange. Le mot de passe n'est pas chiffré lors des communications entre le client et le serveur;
vous pouvez configurer un
.netrc
(ou_netrc
pour Windows) dans votre$HOME
, avec le contenu suivantLa boucle utilisée par Git dans les coulisses gèrerait très bien l'encodage,
@
ou non@
.la source
http://123@ipaddress:port/...
comme adresse de clonage, sans avoir à ajouter des informations d'utilisateur et de mot de passe.L'URL encode tous les caractères inhabituels.
Liste des codes URL.
Dans mon fichier de configuration git, j'ai encodé 'juste' le nom d'utilisateur par exemple:
la source
Par exemple, votre mot de passe stocké dans la variable d'environnement
GIT_PASSWORD
, nom d'utilisateur -GIT_USERNAME
, puis:Explication de:
echo -n $GIT_PASSWORD | hexdump -v -e '"x" 1/1 "%02X"' | tr x %
$GIT_REPOSITORY
<-hello
hello
<-x68x65x6Cx6Cx6F
x68x65x6Cx6Cx6F
<-%68%65%6C%6C%6F
la source
Vous devez encoder en pourcentage | encoder les caractères spéciaux. Par exemple, au lieu de ceci:
vous écrivez ceci:
Donc
@
est remplacé par%40
.la source