Ich verwende GNU Emacs unter Windows und kann magit-push
meine lokalen Änderungen nicht in ein Remote-Repository übertragen. Dies geschieht bei Remote-Repositorys unabhängig davon, ob auf sie mit SSH oder HTTPS zugegriffen wird. Was muss ich tun, damit magit-push
Windows unter Windows genauso nahtlos (oder zumindest fast) funktioniert wie auf meinen Linux-Computern?
Alles was ich im *Messages*
Puffer sehe ist
Running c:/Program Files (x86)/Git/bin/git.exe push -v origin master:refs/heads/master
Das gleiche zeigt sich *magit-process*
mehr oder weniger im Puffer. Nichts nützlicheres. Ich kann Push über die Befehlszeile senden, aber es fragt nach dem Passwort meines SSH-Schlüssels. Könnte das das Problem sein? Ich habe versucht, den Schlüssel mit Pageant (PuTTYs Schlüsselagent) zu laden, aber das schien keinen Unterschied zu machen.
Wenn es hilfreich ist, habe ich Cygwin installiert und würde mich über eine Lösung freuen, bei der Emacs gezwungen wird, die ausführbaren Dateien von Cygwin zu verwenden.
quelle
Wenn Sie dies noch nicht getan haben, würde ich die Verwendung von SSH anstelle von HTTP empfehlen, wie es mir viele bei meiner Untersuchung empfohlen haben. Trotzdem konnte ich dieses Problem mithilfe der folgenden FAQ beheben:
https://github.com/magit/magit/wiki/FAQ#windows-cannot-push-with-ssh-passphrase
Die fehlende Komponente (aus Githubs Git Bash .bashrc-Skript) besteht darin, dass der Start des SSH-Agenten für Schnittstellen wie die Windows-Befehlszeile oder Emacs nicht möglich ist. Wenn Sie die obigen Schritte ausführen, wird ssh-agent beim Start von emacs gestartet. Beachten Sie, dass Sie Git Bash starten und Ihre SSH-Passphrase eingeben müssen, wenn Sie Ihren Computer starten / neu starten.
quelle
Auch ich habe dieses Verhalten eine Weile erlebt und bin bis heute nicht dazu gekommen, es wirklich zu beheben. Ich habe dazu Folgendes in meine Init-Datei eingefügt:
Ich habe dies auch getestet, indem ich ein sauberes Emacs (
emacs -Q
) geöffnetmagit
, diese Zeile geladen und ausgewertet habe, und es hat funktioniert.Dies funktioniert mit
Pageant
, so dass Sie sich nicht damit anlegen müssenssh-agent
.quelle
Wenn Sie Cygwin bereits installiert haben, können Sie Ihre Schlüssel mithilfe von Schlüsselbund und Schlüsselbundumgebung verwalten.
Verwenden Sie dann die Shell Ihrer Wahl, um den Schlüsselbund zu starten
um sicherzustellen, dass die Schlüssel in Emacs geladen werden.
quelle
magit-push
Befehl hing wie immer.Ich habe nie herausgefunden, wie ich das mit MSYS Git und Emacs beheben kann, aber hier ist eine nahtlose Problemumgehung.
Fügen Sie Git Credential Winstore zu Ihrem $ PATH hinzu. Git-Credential-Winstore verwendet den Windows-Schlüsselbund, um Ihre Kennwörter für Sie zu verwalten, und Magit wird gerne auf Remote-Repositorys übertragen.
Stellen Sie in Ihrer
.gitconfig
Datei Folgendes ein:Dies funktioniert, weil in den Git Credential Docs angegeben ist, dass "wenn der Hilfsname kein absoluter Pfad ist, der String git credential- vorangestellt wird". Ich bevorzuge diesen Ansatz.
Alternativ können Sie einfach git-credential-winstore.exe ausführen und es wird sich selbst in Ihrem AppData-Ordner installieren und Ihre
.gitconfig
Datei mit einem fest codierten Pfad zu ihrem Speicherort ausfüllen . Nach dem Ausführen sehen Sie folgendermaßen aus.gitconfig
:Das Ausrufezeichen weist Git an, die Zeichenfolge als absoluten Pfad zu behandeln.
quelle
Wie @bastibe zeigte, wartet Magit wahrscheinlich auf eine Passworteingabe und bleibt einfach dran ...
Ich erinnere mich an Folgendes, als ich gezwungen war, Windows zu verwenden :-). Ich erinnere mich nicht an den genauen Befehlsnamen, stelle auch sicher, dass der
exec-path
enthältc:/Program Files (x86)/Git/bin/
.quelle
Ich habe runemacs.exe von der Git-Shell ausgeführt. Jetzt funktioniert der Git Push von Magit.
quelle
runemacs
wollten , bearbeiten Sie bitte Ihre Antwort, die erklärt, wie das Laufen irgendwie mit Magit zusammenhängt.