Update September 2015 (6 Jahre später)
Die letzte Version von git-for-Windows (2.5.3) enthält jetzt:
Durch die Konfiguration git config core.editor notepad
können Benutzer jetzt notepad.exe
als Standardeditor verwenden .
Die Konfiguration git config format.commitMessageColumns 72
wird vom Notepad-Wrapper übernommen und die Commit-Nachricht in Zeilenumbruch umbrochen, nachdem der Benutzer sie bearbeitet hat.
Siehe Commit 69b301b von Johannes Schindelin ( dscho
) .
Und Git 2.16 (Q1 2018) zeigt eine Meldung an, die dem Benutzer mitteilt, dass er darauf wartet, dass der Benutzer die Bearbeitung beendet, wenn ein Editor erzeugt wird, falls sich der Editor in einem versteckten Fenster oder an einem dunklen Ort öffnet und der Benutzer verloren geht.
Siehe Commit abfb04d (07. Dezember 2017) und Commit a64f213 (29. November 2017) von Lars Schneider ( larsxschneider
) .
Mit freundlichergitster
Unterstützung von Junio C Hamano ( ) .
(Zusammengeführt von Junio C Hamano - gitster
- in Commit 0c69a13 , 19. Dezember 2017)
launch_editor()
: Geben Sie an, dass Git auf Benutzereingaben wartet
Wenn eine Grafik GIT_EDITOR
durch einen Git-Befehl erzeugt wird, der geöffnet wird und auf Benutzereingaben wartet (z. B. " git rebase -i
"), wird das Editorfenster möglicherweise von anderen Fenstern verdeckt.
Der Benutzer starrt möglicherweise auf das ursprüngliche Git-Terminalfenster, ohne zu bemerken, dass er mit einem anderen Fenster interagieren muss, bevor Git fortfahren kann. Für diesen Benutzer scheint Git zu hängen.
Drucken Sie eine Nachricht aus, dass Git auf die Eingabe des Editors im ursprünglichen Terminal wartet, und entfernen Sie sie, wenn der Editor zurückkehrt, wenn das Terminal das Löschen der letzten Zeile unterstützt
Ursprüngliche Antwort
Ich habe es gerade mit der Git-Version 1.6.2.msysgit.0.186.gf7512 und Notepad ++ 5.3.1 getestet
Ich bevorzuge es, keine EDITOR-Variable setzen zu müssen, also habe ich 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 definiere, einschließlich:
"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 von der DOS-Sitzung aus, aber nicht von der Git-Shell .
(Nicht, dass mit dem Konfigurationsmechanismus core.editor ein Skript mit " start /WAIT...
" nicht funktionieren würde, sondern nur ein neues DOS-Fenster öffnen würde.)
Bennetts Antwort erwähnt die Möglichkeit, das Hinzufügen eines Skripts zu vermeiden, aber das Programm selbst zwischen einfachen Anführungszeichen direkt zu referenzieren . Beachten Sie die Richtung der Schrägstriche! Verwenden Sie /
NICHT \
, um Ordner im Pfadnamen zu trennen!
git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
Oder wenn Sie sich in einem 64-Bit-System befinden:
git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"
Aber ich ziehe mit einem Skript (siehe unten): die Art , wie ich mit verschiedenen Pfaden oder verschiedene Optionen , ohne dass eine erneute Registrierung spielen können git config
.
Die eigentliche Lösung (mit einem Skript) bestand darin, Folgendes zu realisieren:
Was Sie in der Konfigurationsdatei referenzieren, ist tatsächlich ein shell ( /bin/sh
) - Skript , kein 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
unter DOS oder Git Shell oder git rebase -i ...
unter DOS oder Git Shell arbeiten.
Bot-Befehle lösen eine neue Instanz von Notepad ++ aus (daher die-multiInst
Option ') und warten, bis diese Instanz geschlossen ist, bevor Sie fortfahren.
Beachten Sie, dass ich nur '/' verwende, nicht \
'. Und ich habe msysgit mit Option 2 installiert. (Fügen Sie das git\bin
Verzeichnis der PATH
Umgebungsvariablen hinzu, ohne jedoch einige integrierte Windows-Tools zu überschreiben.)
Die Tatsache, dass der Notepad ++ - Wrapper .bat heißt, ist nicht wichtig.
Es ist besser, es 'npp.sh' zu nennen und es in das [git]\cmd
Verzeichnis zu stellen (oder in ein Verzeichnis, auf das Ihre PATH-Umgebungsvariable verweist).
Siehe auch:
lightfire228 fügt in den Kommentaren hinzu :
Informationen zu Problemen mit N ++, bei denen N ++ nur eine leere Datei öffnet und git Ihre Festschreibungsnachricht nicht akzeptiert, finden Sie unter " Abbrechen der Festschreibung aufgrund einer leeren Nachricht ": Ändern Sie Ihre .bat
oder .sh
-Datei wie folgt:
"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>.
Dadurch wird Notepad ++ angewiesen, die temporäre Festschreibungsdatei zu öffnen und nicht eine leere neue.