Okay, das ist komisch. Zunächst einmal ist dies Mintty, das auf aktuellem Cygwin ausgeführt wird, wobei der Git aus Cygwins setup.exe gezogen wird. Ich laufe 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>
Was geht hier vor sich? Handelt es sich um ein Terminalproblem, ein Shellproblem, ein Git-Problem oder ein Cygwin-Problem?
Update: Ja, ich verwende die Cygwin-Git-Version, nicht die Windows-Version:
$ 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
eingegebenen Zeichen nicht angezeigt werden). t immer auf stdin des Git-Prozesses gesendet. Aber ich weiß nicht, was das spezifische Problem sein könnte.Antworten:
OK, ich denke ich habe eine definitive Lösung gefunden.
Das Problem ist, dass Git unabhängig vom verwendeten Terminal (puttycyg, mintty, cmd.exe) standardmäßig versucht, eine "einfache Passwortabfrage" zu verwenden (wie Sie in der Beschreibung von lesen können), da es keine besser konfigurierten Alternativen gibt
core.askpass
Konfigurationsoption ).Die einfache Passwortabfrage funktioniert anscheinend nur unter echtem UNIX, nicht aber unter Cygwin.
Die Lösung besteht darin, ein SSH_ASKPASS-kompatibles Programm für Windows zu installieren und Git für die Verwendung zu konfigurieren.
Was ich getan habe war:
git config --global core.askpass "C:/win_ssh_askpass.exe"
. Beachten Sie, dass die EXE-Datei im Namen Unterstriche und keine Minuszeichen enthält.https://<user>@<domain>/<repository>
). Andernfalls fragt Git nach dem Login, bevor Sie nach dem Passwort fragen. Verwenden Sie dazu dasselbe askpass-Dienstprogramm. Möglicherweise geben Sie Ihr Passwort unwissentlich als Login ein, das an den Webserver gesendet und in dessen Zugriffsprotokoll als Klartext protokolliert wird!Jetzt fragt Git in einem eleganten GUI-Fenster nach dem Passwort und funktioniert unabhängig vom verwendeten Terminal :)
quelle
Ich habe das gleiche Problem festgestellt - in meinem Fall wurde jedoch SSH auf dem Cygwin-Server ausgeführt, sodass ein Win32-GUI-Askpass offensichtlich nicht funktioniert.
Stattdessen habe ich dieses einfache Skript für den Askpass geschrieben. Ich dachte, es könnte auch von normalen Eingabeaufforderungen aus verwendet werden, indem man das tty-Gerät abruft,
/bin/tty.exe
aber das hat aus einem unbekannten Grund nicht funktioniert (zögern Sie nicht, sich zu ttyen oder suchen Sie nach einer anderen Lösung, um das tty zu bekommen, vielleicht habe ich es einfach irgendwie falsch verstanden )./bin/askpass.sh:
Stellen Sie sicher, dass dieses Skript ausführbar ist, und verwenden Sie es als core.askpass-Einstellung Ihres Git. Da dieses Skript auf der Variablen $ SSH_TTY basiert, funktioniert es normalerweise nur mit SSH. Sie können jedoch $ SSH_TTY ein-
.bashrc
oder ausschalten.bash_profile
; Auf diese Weise sollte es auch von einer Konsole aus funktionieren. Die folgende Zeile in Ihrem RC-Skript sollte dies tun:quelle
Die oben genannten Lösungen funktionieren bei mir nicht, aber ich habe eine andere gefunden.
Sie müssen ssh agent ausführen
fügen Sie einfach ~ / .bashrc hinzu und starten Sie die Konsole neu
PS Chrome und Opera verwenden einen Zeilenumbruch, der nicht mit Bash kompatibel ist. Verwenden Sie einfach einen anderen Browser zum Kopieren und Einfügen
quelle
Möglicherweise enthält
&
die URL ein Metazeichen, z. B.. Dies würde dazu führen, dass git im Hintergrund ausgeführt wird und auf einem Unix-System gestoppt wird, sobald versucht wird, von stdin zu lesen. A;
würde auch den Befehl auf halbem Weg durch die Zeile beenden und denCtrl-C
Rest der Zeile (einen separaten Befehl) abbrechen.Es ist interessant, dass
git
das Repo initialisiert wird/cygdrive/c/src/project/dev/.git/
, obwohl Sie es angewiesen haben~/src/project/dev
(es sei denn, Sie haben Ihr Home-Verzeichnis an einem fremden Ort). Dies würde bedeuten, dass dergit
Befehl den Rest der Befehlszeile nicht sieht, was passieren würde, wenn ein Streuner&
oder eine;
URL vorhanden wäre.(Ich hatte dieses Problem oft mit
wget
, obwohl nicht mitgit
.)Probieren Sie ein
git clone
aus einem anderen Repo oder verwenden Sie ein anderes Transportmittel aus demselben Repo, um festzustellen, ob das Repogit
generell oder nur für dieses Repo fehlerhaft ist. Sie können auch versuchen, die URL in einfache Anführungszeichen zu setzen.quelle
~/src
ist ein Symlink zu/cygdrive/c/src
(C:\src
). Die&
URL enthält kein . Ich werde versuchen, ein öffentliches Git-Repository zu klonen, aber im Allgemeinen haben diese kein Passwort ...Schauen Sie sich das folgende Problem an - ich bin mir ziemlich sicher, dass es nur eine Einschränkung der Minz- und Interoperabilität mit Windows ist.
Ausgabe 56 - Mintty
Ich hatte auch Probleme mit der Ausführung von MySQL und anderen Programmen von mintty - die Antwort lautet also, dass es sich um ein Terminal-Emulationsproblem handelt.
quelle
Die Frage wurde bereits beantwortet ... Ich möchte nur hinzufügen, wie ich es behoben habe:
Beim Überprüfen von Windows
Git Bash
konnte ich dasgit
folgende Set sehenSSH_ASKPASS
Auf Cygwin habe ich also dieselbe Variable hinzugefügt
.bashrc
oder
Dabei öffnet Git den SSH_ASKPASS von Git ... Ich musste keine zusätzliche Software installieren oder ein zusätzliches Skript erstellen.
Hoffe das kann helfen!
quelle
Ich erinnere mich, dass ich vor Jahren einige Probleme mit der CVS-Authentifizierung von Cygwin hatte. Dies hing damit zusammen, ob Sie Cygwin mit den Zeilenenden im DOS- oder Unix-Stil (CRLF im Vergleich zu nur LF) installiert haben. Dies ist eine der Optionen im Installationsdialog. Wenn Sie das falsche Passwort auswählen (ich denke, DOS hat funktioniert), wird das Passwort unleserlich oder hat ein falsches Zeichen oder ähnliches.
Auf jeden Fall könnte es sich lohnen, die andere Option auszuprobieren.
quelle
Ich habe das gleiche Problem, und, im Gegensatz zu diesem Thread , tritt das Problem mit Cygwin GIT in allen möglichen Terminals -
puttycyg
,mintty
und die klassischen Windows -cmd.exe
.Ich bin immer noch auf der Suche nach einer geeigneten Lösung, aber es gibt eine Problemumgehung - obwohl dies sehr unsicher ist, können Sie versuchen, das Passwort in die URL des Repositorys zu schreiben, z.
Funktioniert die Problemumgehung für Sie?
quelle
Wenn es sich um ein Repository handelt, das Sie häufig verwenden, ist es möglicherweise am einfachsten, eine ~ / .netrc-Datei mit zu erstellen
Natürlich sollten Sie die drakonischen Berechtigungen für die Datei entsprechend festlegen.
quelle
Nur eine Verfeinerung zu Kommentar 2
Es gibt einen cygwin ssh-ask-Pass (inoffizielle) hier
Laden Sie einfach die Datei tar.bz2 herunter und entpacken Sie sie in Ihren Cygwin-Ordner. Es funktioniert ohne borland delphi runtime zu installieren.
quelle