Baiklah, ini aneh. Pertama, ini adalah menjalankan cygwin terbaru, dengan git ditarik dari setup.exe cygwin. Saya menjalankan zsh.
$ git clone https://<user>@<domain>/<repository>/ ~/src/project/dev
Initialized empty Git repository in /cygdrive/c/src/project/dev/.git/
Password: <actual password in plain text appears>
# Nothing happens...
^C
$ <password text that I just typed>
zsh: command not found: <same password text>
Apa yang terjadi disini? Apakah ini masalah terminal, masalah shell, masalah git, atau masalah cygwin?
Pembaruan: Ya, saya menjalankan versi Cygwin git, bukan versi Windows:
$ which git
/usr/bin/git
$ git --version
git version 1.7.1
$ /cygdrive/c/Program\ Files\ \(x86\)/Git/bin/git.exe --version
git version 1.7.0.2.msysgit.0
^C
menunjukkan bahwa karakter tidak muncul. t dikirim ke stdin dari proses git. Tapi saya tidak tahu apa masalah spesifiknya.Jawaban:
OK, saya pikir saya sudah menemukan solusi yang pasti.
Masalahnya adalah bahwa, terlepas dari terminal yang digunakan (puttycyg, mintty, cmd.exe), Git secara default, dengan tidak adanya alternatif yang lebih baik dikonfigurasi, mencoba menggunakan "prompt kata sandi sederhana" (seperti yang dapat Anda baca dalam deskripsi
core.askpass
opsi konfigurasi ).Prompt kata sandi sederhana tampaknya hanya berfungsi pada UNIX yang asli, tetapi tidak pada Cygwin.
Solusinya adalah menginstal program yang kompatibel dengan SSH_ASKPASS untuk Windows dan mengkonfigurasi Git untuk menggunakannya.
Apa yang saya lakukan adalah:
git config --global core.askpass "C:/win_ssh_askpass.exe"
. Perhatikan bahwa file EXE memiliki garis bawah pada namanya, bukan tanda minus.https://<user>@<domain>/<repository>
). Jika tidak, Git akan meminta login sebelum meminta kata sandi, menggunakan utilitas askpass yang sama. Anda mungkin tanpa sadar memasukkan kata sandi Anda sebagai login, yang akan dikirim ke server web dan login log aksesnya sebagai teks biasa!Sekarang Git meminta kata sandi menggunakan jendela GUI yang elegan dan berfungsi terlepas dari terminal yang digunakan :)
sumber
Saya telah mengalami masalah yang sama - namun dalam kasus saya saya SSH di server Cygwin jadi jelas sebuah askpass WinUI GUI tidak akan berfungsi.
Sebagai gantinya, saya menulis skrip sederhana ini untuk melakukan askpass. Saya pikir itu bisa digunakan dari prompt juga dengan mendapatkan perangkat tty dari
/bin/tty.exe
tetapi itu tidak bekerja untuk alasan yang tidak diketahui (jangan ragu untuk tty diri sendiri atau mencari solusi lain untuk mendapatkan tty, mungkin saya salah entah bagaimana caranya) )./bin/askpass.sh:
Pastikan skrip ini dapat dieksekusi dan gunakan sebagai pengaturan core.askpass git Anda. Karena skrip ini bergantung pada variabel $ SSH_TTY, biasanya skrip ini hanya bekerja dari SSH. Namun Anda dapat menetapkan $ SSH_TTY di
.bashrc
atau.bash_profile
jika tidak disetel; dengan cara ini seharusnya bekerja bahkan dari konsol. Baris berikut dalam skrip rc Anda harus melakukannya:sumber
solusi di atas tidak bekerja untuk saya, tetapi saya menemukan yang lain.
Anda harus menjalankan ssh agent
cukup tambahkan ke ~ / .bashrc dan restart konsol
PS Chrome dan Opera menggunakan linebreak yang tidak kompatibel dengan bash - cukup gunakan browser lain untuk menyalin salin
sumber
Mungkin Anda memiliki metacharacter, seperti
&
, di URL. Ini akan menyebabkan git berjalan di latar belakang, dan pada sistem Unix, ia akan dihentikan begitu ia mencoba membaca dari stdin. A;
juga akan menghentikan perintah setengah jalan melalui garis, danCtrl-C
akan menyebabkan sisa baris (perintah terpisah) dibatalkan.Sangat menarik yang
git
menginisialisasi repo/cygdrive/c/src/project/dev/.git/
meskipun Anda menyuruhnya untuk menggunakannya~/src/project/dev
(kecuali Anda memiliki direktori home di tempat yang asing). Ini akan menyarankan bahwagit
perintah tidak melihat sisa baris perintah, yang akan terjadi jika ada yang tersesat&
atau;
dalam URL.(Saya sudah sering mengalami masalah ini
wget
, meskipun tidak dengangit
.)Coba
git clone
dari repo yang berbeda, atau gunakan transpor yang berbeda dari repo yang sama, untuk melihat apakahgit
berantakan secara umum atau hanya untuk repo ini. Anda juga dapat mencoba menempatkan tanda kutip tunggal di sekitar URL.sumber
~/src
adalah symlink ke/cygdrive/c/src
(C:\src
). Tidak ada&
di URL. Saya akan mencoba mengkloning repositori git publik, tetapi umumnya mereka tidak akan memiliki kata sandi ...Lihatlah masalah berikut - Saya cukup yakin sekarang ini hanya batasan mintty dan interoperabilitas dengan Windows.
Edisi 56 - mintty
Saya juga punya masalah menjalankan mysql dan semacamnya dari mintty - jadi, jawabannya adalah bahwa itu masalah emulasi terminal.
sumber
Pertanyaan sudah dijawab ... Saya hanya ingin menambahkan cara saya memperbaiki:
Memeriksa Windows
Git Bash
, saya bisa melihatgit
set yang mengikutiSSH_ASKPASS
Jadi, pada Cygwin, saya menambahkan variabel yang sama ke
.bashrc
atau
Melakukan ini, git membuka SSH_ASKPASS dari Git ... Saya tidak harus menginstal SW tambahan atau membuat skrip tambahan.
Semoga ini bisa membantu!
sumber
Bertahun-tahun yang lalu saya ingat memiliki beberapa masalah dengan otentikasi CVS Cygwin ... itu berkaitan dengan apakah Anda menginstal Cygwin dengan ujung garis gaya DOS atau Unix (CRLF vs just LF); itu salah satu opsi pada dialog penginstal. Jika Anda memilih yang salah (saya pikir DOS-lah yang berfungsi) kata sandi akan berakhir rusak atau dengan karakter palsu atau sesuatu.
Pokoknya, mungkin ada baiknya mencoba opsi lain.
sumber
Saya memiliki masalah yang sama, dan, berlawanan dengan utas ini , masalahnya terjadi dengan Cygwin GIT di semua terminal yang mungkin -
puttycyg
,mintty
dan Windows klasikcmd.exe
.Saya masih mencari solusi yang tepat, tetapi ada solusinya - meskipun sangat tidak aman, Anda dapat mencoba menempatkan kata sandi dalam URL repositori, misalnya:
Apakah solusinya bekerja untuk Anda?
sumber
Jika itu repositori yang sering Anda gunakan, hal yang paling mudah adalah membuat file ~ / .netrc
Tentunya, Anda harus mengatur izin draconian dengan tepat pada file tersebut.
sumber
Hanya penyempurnaan pada komentar # 2
Ada cygwin ssh-ask-pass (tidak resmi) di sini
Unduh saja tar.bz2 dan bongkar ke folder cygwin Anda. Ini bekerja tanpa menginstal runtime delphi borland.
sumber