Update September 2015 (6 Jahre später)
Le site letzte Version von git-for-Windows (2.5.3) umfasst jetzt:
Durch die Konfiguration von git config core.editor notepad
, Benutzer können nun notepad.exe
als ihren Standard-Editor .
Konfigurieren von git config format.commitMessageColumns 72
wird vom Notepad-Wrapper aufgegriffen und umbricht die Commit-Nachricht, nachdem der Benutzer sie bearbeitet hat.
参照 Übergabe 69b301b por Johannes Schindelin ( dscho
) .
Und Git 2.16 (Q1 2018) zeigt eine Meldung an, um den Benutzer darauf hinzuweisen, dass es darauf wartet, dass der Benutzer die Bearbeitung beendet, wenn ein Editor gestartet wird, falls der Editor sich in einem versteckten Fenster oder an einem unübersichtlichen Ort öffnet und der Benutzer sich verloren geht.
参照 abfb04d übergeben (07. Dezember 2017), und a64f213 übergeben (29 Nov 2017) von Lars Schneider ( larsxschneider
) .
Mit Hilfe von: Junio C. Hamano ( gitster
) .
(Zusammengefasst von Junio C. Hamano -- gitster
-- en 0c69a13 übergeben , 19. Dezember 2017)
launch_editor()
: zeigt an, dass Git auf Benutzereingaben wartet
Wenn eine grafische GIT_EDITOR
wird durch einen Git-Befehl ausgelöst, der die öffnet und auf Benutzereingaben wartet (z.B. " git rebase -i
"), dann wird das Editorfenster möglicherweise von anderen Fenstern verdeckt werden.
Der Benutzer könnte auf folgende Dinge starren das ursprüngliche Git-Terminalfenster zu starren, ohne überhaupt zu merken, dass er/sie mit einem anderen Fenster interagieren muss, bevor Git fortgesetzt werden kann. Für diesen Benutzer ist Git hängend erscheinen.
Eine Meldung ausgeben, dass Git auf die Eingabe des Editors im Original wartet Terminal aus und löschen Sie sie, wenn der Editor zurückkehrt, falls das Terminal das Löschen der letzten Zeile unterstützt
Ursprüngliche Antwort
Ich habe es gerade mit Git Version 1.6.2.msysgit.0.186.gf7512 und Notepad++5.3.1 getestet
Ich bevorzuge no eine EDITOR-Variable setzen müssen, also habe ich es versucht:
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\""
# or
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\" %*"
Das gibt immer:
C:\prog\git>git config --global --edit
"c:\Program Files\Notepad++\notepad++.exe" %*: c:\Program Files\Notepad++\notepad++.exe: command not found
error: There was a problem with the editor '"c:\Program Files\Notepad++\notepad++.exe" %*'.
Wenn ich eine npp.bat mit definiere:
"c:\Program Files\Notepad++\notepad++.exe" %*
und ich tippe:
C:\prog\git>git config --global core.editor C:\prog\git\npp.bat
Es funktioniert nur in der DOS-Sitzung, aber nicht von der Git-Shell aus .
(nicht, dass mit dem Konfigurationsmechanismus von core.editor ein Skript mit " start /WAIT...
" würde nicht funktionieren, sondern nur ein neues DOS-Fenster öffnen)
Bennett's Antwort erwähnt die Möglichkeit, kein Skript hinzuzufügen, sondern direkt auf das Programm selbst zu verweisen zwischen einfachen Zitaten . Achten Sie auf die Richtung der Schrägstriche! Verwenden Sie /
PAS \
zur Trennung von Ordnern im Pfadnamen!
git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
Oder wenn Sie mit einem 64-Bit-System arbeiten:
git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
Ich ziehe es jedoch vor, ein Skript zu verwenden (siehe unten): Auf diese Weise kann ich mit verschiedenen Pfaden oder Optionen spielen, ohne mich erneut für ein git config
.
Die eigentliche Lösung (mit einem Skript) war, dies zu realisieren:
auf die Sie sich in der Konfigurationsdatei beziehen, ist eigentlich eine Shell ( /bin/sh
) Skript und nicht ein DOS-Skript.
Was also funktioniert, ist:
C:\prog\git>git config --global core.editor C:/prog/git/npp.bat
mit C:/prog/git/npp.bat
:
#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"
oder
#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"
Mit dieser Einstellung kann ich ' git config --global --edit
' von DOS oder Git Shell, oder ich kann ' git rebase -i ...
' von DOS oder Git Shell aus.
Bot-Befehle lösen eine neue Instanz von notepad++ aus (daher die -multiInst
'), und warten Sie, bis diese Instanz geschlossen wird, bevor Sie fortfahren.
Beachten Sie, dass ich nur '/' verwende, nicht \
'. Und ich msysgit mit Option 2 installiert. (Fügen Sie die git\bin
in das Verzeichnis PATH
Umgebungsvariable, aber ohne einige eingebaute Windows-Tools außer Kraft zu setzen)
Die Tatsache, dass der Wrapper von Notepad++ .bat heißt, ist nicht wichtig.
Es wäre besser, die Datei 'npp.sh' zu nennen und sie im Verzeichnis [git]\cmd
(oder in einem beliebigen Verzeichnis, auf das Ihre Umgebungsvariable PATH verweist).
Siehe auch:
Leuchtfeuer228 fügt hinzu. in den Kommentaren :
Für alle, die ein Problem haben, bei dem N++ einfach eine leere Datei öffnet und Git Ihre Commit-Nachricht nicht annimmt, siehe " Abbruch der Übertragung aufgrund einer leeren Nachricht ": Ändern Sie Ihr .bat
o .sh
Datei zu sagen:
"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>.
Dadurch wird Notepad++ angewiesen, die temporäre Commit-Datei zu öffnen, anstatt eine leere neue Datei zu erstellen.