Saya memiliki konfigurasi git proxy sebagai 'http.proxy = http: // userId: pwd @ 123 @ipaddress: port' tetapi saat mengkloning proyek jarak jauh, saya mendapatkan kesalahan seperti
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
Bagaimana cara keluar dari karakter '@' dalam kata sandi?
Harap diperhatikan: Saya tidak dapat mengubah kata sandi.
Catatan (November 2013)
Encoding url (terutama karakter khusus dalam password) adalah solusi yang tepat.
Yang
.netrc
disebutkan di bawah ini hanya untuk url repo jarak jauh, bukan untuk proxy yang digunakan untuk menyelesaikan url repo jarak jauh tersebut.Untuk encoding tersebut, lihat " Percent-encoding ":
Jawaban asli (Mei 2011)
Dua komentar:
memiliki kata sandi untuk server yang diakses dengan http (bukan https) adalah ... aneh. Kata sandi tidak dienkripsi selama komunikasi antara klien dan server;
Anda dapat mengatur
.netrc
(atau_netrc
untuk Windows) di Anda$HOME
, dengan konten berikutCurl yang digunakan oleh Git di belakang layar akan menangani pengkodean dengan baik,
@
atau tidak@
.sumber
http://123@ipaddress:port/...
sebagai alamat kloning, tanpa harus menambahkan informasi pengguna dan kata sandi.URL menyandikan karakter yang tidak biasa.
Daftar kode url.
Di file konfigurasi git saya, saya telah menyandikan 'hanya' nama pengguna misalnya:
sumber
Misalnya sandi Anda disimpan di variabel lingkungan
GIT_PASSWORD
, nama pengguna -GIT_USERNAME
, lalu:Penjelasan tentang:
echo -n $GIT_PASSWORD | hexdump -v -e '"x" 1/1 "%02X"' | tr x %
$GIT_PASSWORD
<-hello
hello
<-x68x65x6Cx6Cx6F
x68x65x6Cx6Cx6F
<-%68%65%6C%6C%6F
sumber
Anda harus persen-encode | menyandikan karakter khusus. Misalnya, alih-alih ini:
Anda menulis ini:
Jadi
@
diganti dengan%40
.sumber