Wie kann ich einen Editor für Git unter Windows einrichten?


561

Ich probiere Git unter Windows aus . Ich habe versucht, "git commit" zu versuchen und habe diesen Fehler erhalten:

Das Terminal ist dumm, aber weder VISUAL noch EDITOR definiert. Bitte geben Sie die Nachricht entweder mit der Option -m oder -F ein.

Also habe ich herausgefunden, dass ich eine Umgebungsvariable namens EDITOR haben muss. Kein Problem. Ich habe es so eingestellt, dass es auf Notepad zeigt. Das hat fast funktioniert. Die Standard-Commit-Nachricht wird im Editor geöffnet. Notepad unterstützt jedoch keine Bare-Line-Feeds. Ich bin rausgegangen und habe Notepad ++ bekommen , aber ich kann nicht herausfinden, wie ich Notepad ++ so einrichten kann %EDITOR%, dass es wie erwartet mit Git funktioniert.

Ich bin nicht mit Notepad ++ verheiratet. An dieser Stelle macht es mir nichts aus, welchen Editor ich benutze. Ich möchte nur Commit-Nachrichten in einem Editor und nicht in der Befehlszeile (mit -m) eingeben können.

Diejenigen von Ihnen, die Git unter Windows verwenden: Mit welchem ​​Tool bearbeiten Sie Ihre Commit-Nachrichten und was mussten Sie tun, damit es funktioniert?


7
TLDR: Setzen Sie einfache Anführungszeichen um den Pfad zur ausführbaren Datei des Editors
yoyo

Wahrscheinlich nicht hilfreich, aber FWIW, ich benutze nur einen normalen Notizblock. Ich habe nichts getan, damit es funktioniert. Standardmäßig hat es
sofort funktioniert

11
Update September 2015: Ein einfaches git config core.editor notepadist jetzt genug. Siehe meine aktualisierte Antwort unten .
VonC

Nur eine kurze Anmerkung, dass JEdit kein geeigneter Editor für Git ist. JEdit öffnet nur eine Instanz, auch für mehrere Dateien. Wenn es bereits geöffnet war, wird durch git eine neue Datei geöffnet. Sie müssen JEdit jedoch vollständig schließen, bevor git fortgesetzt werden kann. Es gibt keine Befehlszeilenoption, mit der JEdit eine separate Instanz zum Bearbeiten der Festschreibungsnachricht öffnet.
GrantRobertson

Falls jemand Sublime Text 3 liebt, finden Sie hier meine Anweisungen zur Konfiguration für Windows ... und auch für Linux: Beste Einstellungen für Sublime Text 3 als Git-Editor (Windows- und Linux-Anweisungen) . @yoyo, TLDR für die Verwendung eines beliebigen Texteditors: Setzen Sie einfache Anführungszeichen um den Pfad zur ausführbaren Editor-Datei UND verwenden Sie Schrägstriche (/), NICHT Schrägstriche (\) im Pfadnamen zur ausführbaren Windows-Datei.
Gabriel Staples

Antworten:


562

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 notepadkönnen Benutzer jetzt notepad.exeals Standardeditor verwenden .
Die Konfiguration git config format.commitMessageColumns 72wird 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_EDITORdurch 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 --editunter 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\binVerzeichnis der PATHUmgebungsvariablen 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]\cmdVerzeichnis 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 .batoder .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.


In Ihrem Shell-Skript benötigen Sie doppelte Anführungszeichen um $ *, da dies sonst für Pfade mit Leerzeichen nicht ordnungsgemäß funktioniert. Vielen Dank für die ausführliche Erklärung - ich installiere git (und eine Reihe anderer Dinge) unter Windows für Anfänger, und die Befehlszeile ist schwer genug zu verstehen, ohne dass sie vi-Befehle lernen.
Sarah Mei

Ein weiteres konkretes Beispiel: stackoverflow.com/questions/1634161/…
VonC

1
Nach Bennetts Antwort müssen Sie kein Skript erstellen, sondern können einfach ein Apostroph 'in den Anführungszeichen' verwenden.
Tobias Kienzler

@Tobias: stimmt, ich habe seine Antwort in meine aufgenommen, sowie den Grund, warum ich es immer noch vorziehe, in meinen git configEinstellungen auf ein Skript zu verweisen .
VonC

6
@NateGlenn Verwenden Sie das verkürzte dir /XÄquivalent: " PROGRA~2" für " Program Files (x86)". Dies ist eine gute Angewohnheit, wenn Sie plattformübergreifende kompatible Tools unter Windows verwenden, mit denen Sie Leerzeichen quetschen können.
JJ Zabkar

300

Aufbauend auf Darrens Antwort können Sie Notepad ++ einfach so verwenden (alles in einer Zeile):

git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Offensichtlich sollte der C:/Program Files/Notepad++/notepad++.exeTeil der Pfad zur ausführbaren Notepad ++ - Datei auf Ihrem System sein. Zum Beispiel könnte es sein C:/Program Files (x86)/Notepad++/notepad++.exe.

Es funktioniert wie ein Zauber für mich.


10
Ich auch! Übrigens, diese Schalter werden unter C: / Programme / Notepad ++ / user.manual / documentation / notepad-user-manual / command-line.html
Andrew Swan

23
Achten Sie darauf, dass sich Notepad ++ in `C: \ Programme (x86)` befindet
mindless.panda

8
Für x64 Windows ändern Sie zu: git config --global core.editor "'C: / Programme (x86) / Notepad ++ / notepad ++. Exe' -multiInst -notabbar -nosession -noPlugin"
Dariusz

4
Mir ist klar, dass ich zu spät zu dieser Party komme, aber weiß jemand aus Neugier (oder erinnert er sich nach all den Jahren sogar), warum man "-notabbar" angeben würde? Ich verstehe die Gründe für die anderen Parameter (na ja, nicht sicher, warum "-noPlugin" eigentlich), aber nicht diesen.
Wilson F

11
@WilsonF Der Grund dafür ist, dass Sie Notepad ++ beenden MÜSSEN, damit Git nicht mehr auf Ihre Eingabe wartet und fortfährt. Sie möchten in dieser Instanz von Notepad ++ keine anderen Registerkarten öffnen, da Ihre Git-Sitzung dann eingefroren zu sein scheint! Diese Einstellungen machen genau das Richtige: Wenn Notepad ++ bereits geöffnet ist, erhalten Sie eine neue Instanz, mit der Sie keine anderen Dateien öffnen können und die Sie schließen müssen, wenn Sie fertig sind, damit Git weiß, dass Sie mit der Bearbeitung fertig sind . Funktioniert genauso für Commit-Nachrichten.
ErikE

50

Wie auch immer, ich habe gerade damit herumgespielt und festgestellt, dass Folgendes für mich gut funktioniert:

git config --global core.editor "'C:/Program Files/TextPad 5/TextPad.exe' -m"

Ich glaube nicht, dass CMD einfache Anführungszeichen mag, daher müssen Sie doppelte Anführungszeichen verwenden, "um das in das Leerzeichen eingebettete Zeichenfolgenargument anzugeben".

Cygwin (von dem ich glaube, dass es die zugrunde liegende Plattform für Git's Bash ist) mag andererseits beide 'und "; Sie können einen CMD-ähnlichen Pfad angeben, indem Sie /anstelle von verwenden \, solange die Zeichenfolge in Anführungszeichen steht, dh in diesem Fall in einfachen Anführungszeichen.

Das -mÜberschreiben / zeigt die Verwendung mehrerer Editoren an und es ist nicht erforderlich, %*am Ende angeheftet zu werden.


Vielen Dank für die einfache / doppelte Anführungszeichen-Erklärung, macht jetzt Sinn!
Patrick McDonald

3
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"wirkt wie ein Zauber für mich.
Vlad Holubiev

Ich habe `git config --global code.editor" 'C: \\ Programme \\ Sublime Text 3 \\ sublime_text.exe' -n -w -m "` verwendet, aber wenn ich "git commit" ausführe, öffnet es sich ein Editor. Irgendwelche Gedanken darüber, warum dies der Fall sein würde? Danke im Voraus.
Ryan Chase

@ RyanChase Entfernen Sie den lokalen Konfigurationseintrag von ./git/config zBeditor = notepad
Ricky Boyce

1
Git Bash läuft unter MingW64, nicht unter Cygwin. Cygwin hat eine eigene Git-Binärdatei.
Hans Deragon

27

Bearbeiten: Nach dem Update auf Vim 7.3 bin ich zu dem Schluss gekommen, dass der sauberste und einfachste Weg dies zu tun ist:

  1. Fügen Sie den Hauptordner von Vim zu Ihrem Pfad hinzu (klicken Sie mit der rechten Maustaste auf ArbeitsplatzEigenschaftenErweitertUmgebungsvariablen ).

  2. Führen Sie Folgendes aus:

    git config --global core.editor "gvim --nofork '%*'"
    

Wenn Sie es so machen, bin ich mir ziemlich sicher, dass es auch mit Cygwin funktionieren wird.

Ursprüngliche Antwort:

Selbst mit ein paar Vim-bezogenen Antworten hatte ich Probleme, dies mit gVim unter Windows zum Laufen zu bringen (ohne eine Batch-Datei oder% EDITOR% oder Cygwin zu verwenden).

Was ich schließlich erreicht habe, ist schön und sauber und basiert auf einigen der hier aufgeführten Lösungen:

git config --global core.editor \
"'C:/Program Files/Vim/vim72/gvim.exe' --nofork '%*'"

Ein Problem, das mich eine Weile gekostet hat, ist, dass es sich nicht um Backslashes im Windows-Stil handelt. Sie sind normale Schrägstriche.


1
Wenn vim installiert ist Program Files(x86), müssen Sie den Pfad offensichtlich ändern.
Swapnil

15

Notepad ++ funktioniert einwandfrei, obwohl ich mich dafür entscheide, bei Notepad, -m oder manchmal sogar beim eingebauten "Bearbeiten" zu bleiben.

Das Problem bei der Verwendung von Notepad ++ hängt damit zusammen, wie Git die ausführbare Datei des Editors startet. Meine Lösung hierfür besteht darin, die Umgebungsvariable EDITORauf eine Batchdatei anstatt auf die eigentliche ausführbare Editordatei festzulegen, die Folgendes bewirkt:

start /WAIT "E:\PortableApps\Notepad++Portable\Notepad++Portable.exe" %*

/WAITWeist die Befehlszeilensitzung an, anzuhalten, bis die Anwendung beendet wird, sodass Sie nach Herzenslust bearbeiten können, während Git glücklich auf Sie wartet. % * übergibt alle Argumente an die Batchdatei an Notepad ++.

C:\src> echo %EDITOR%
C:\tools\runeditor.bat

Ich hatte Probleme, dies unter Powershell zum Laufen zu bringen. Diese Methode ( stackoverflow.com/questions/10564/… ) hat jedoch einwandfrei funktioniert.
Peter Stephens

11

WordPad !

Ich bin glücklich mit Vim, aber da ich versuche, Git in die Firma einzuführen, wollte ich etwas, das wir alle haben würden, und stellte fest, dass WordPad in Ordnung zu sein scheint (dh Git wartet, bis Sie mit der Bearbeitung fertig sind und schließen das Fenster).

git config core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'

Das ist Git Bash auf msysgit; Ich habe es nicht an der Windows-Eingabeaufforderung versucht (wenn das einen Unterschied macht).


Ich mochte die Einfachheit, aber es hat bei mir nicht sofort funktioniert. Folgendes habe ich versucht. Ich erhalte die folgende Fehlermeldung: Fehler: Es gab ein Problem mit dem Editor 'C: \ Programme \ Windows NT \ Zubehör \ wordpad.exe'.
Shaun Luttin

3
Die Anführungszeichen sind falsch. Sie müssen die doppelten Anführungszeichen außerhalb der einfachen Anführungszeichen setzen . Verwenden Sie also "'C: \ Programme \ Windows NT \ Zubehör \ wordpad.exe'", und es wird dann funktionieren.
Shaun Luttin

Sie können auch von Schrägstrichen (/) anstelle von Schrägstrichen (\) profitieren.
Chris Jones

1
Außerdem ist es wahrscheinlich am besten, "git config --global" anstelle von "git config" zu verwenden. Sie möchten höchstwahrscheinlich, dass die Einstellung auf alle Git-Repositorys auf Ihrer Workstation angewendet wird, nicht nur auf die, in der Sie sich gerade befinden.
Chris Jones

@ChrisJones, In diesem Fall macht es keinen Sinn, da "Programmdateien" ein Leerzeichen dazwischen haben.
Pacerier

9

Ich benutze Cygwin auch unter Windows, aber mit gVim (im Gegensatz zum terminalbasierten Vim ).

Damit dies funktioniert, habe ich Folgendes getan:

  1. Erstellt eine einzeilige Batchdatei (mit Namen git_editor.bat), die Folgendes enthält: "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. Platziert git_editor.batin meinem PATH.
  3. einstellen GIT_EDITOR=git_editor.bat

git commitWenn dies erledigt ist , wird usw. die ausführbare Datei gVim korrekt aufgerufen.

HINWEIS 1: Die --noforkOption für gVim stellt sicher, dass sie blockiert wird, bis die Festschreibungsnachricht geschrieben wurde.

HINWEIS 2: Die Anführungszeichen um den Pfad zu gVim sind erforderlich, wenn der Pfad Leerzeichen enthält.

HINWEIS 3: Die Anführungszeichen um "% *" werden nur für den Fall benötigt, dass Git einen Dateipfad mit Leerzeichen übergibt.


Für Leute, die msysgit verwenden (nicht Cygwins Git), konnte ich dies ein wenig vereinfachen. stackoverflow.com/questions/10564/…
Nick Knowlson

Beim zweiten Gedanken, dass es auch mit Cygwin funktionieren könnte, bin ich mir nicht ganz sicher
Nick Knowlson

8

Dank der Stack Overflow-Community ... und ein wenig Recherche konnte ich meinen Lieblingseditor, EditPad Pro , dazu bringen, als Kerneditor mit msysgit 1.7.5.GIT und TortoiseGit v1.7.3.0 über Windows XP SP3 zu arbeiten. ..

Den obigen Ratschlägen folgend, habe ich den Pfad zu einem Bash-Skript für den Code-Editor hinzugefügt ...

git config --global core.editor c:/msysgit/cmd/epp.sh

Nach mehreren fehlgeschlagenen Versuchen mit den oben genannten Lösungen ... konnte ich dies endlich zum Laufen bringen. Gemäß der Dokumentation von EditPad Pro kann die Shell durch Hinzufügen des Flags '/ newinstance' auf die Eingabe des Editors warten ...

Das Flag ' / newinstance ' war in meinem Fall der Schlüssel ...

#!/bin/sh
"C:/Program Files/JGsoft/EditPadPro6/EditPadPro.exe" //newinstance "$*"

Ja, dieser doppelte Schrägstrich für den Parameter newinstance sollte in den Dokumenten von Editpad enthalten sein. Danke, dass du es hier notiert hast!
Gwideman

Für EditPad Pro sind Befehlszeilenoptionen erforderlich /newinstance, die genau einen Schrägstrich enthalten sollen. Dies ist für Windows-Anwendungen ziemlich normal. Wenn Sie EditPad über eine UNIX-Shell aufrufen, müssen Sie den von Ihrer Shell angebotenen Mechanismus verwenden, um dem Schrägstrich zu entkommen, damit der Schalter nicht als absoluter Pfad angesehen wird und ein einzelner Literal-Schrägstrich an die Befehlszeile von EditPad übergeben wird.
Jan Goyvaerts

2
Wenn Sie über EditPad Pro 7 verfügen und EditPad Pro von einem Prozess aus aufrufen möchten, der auf den Prozess von EditPad warten möchte, sollten Sie den /waitSchalter in der Befehlszeile von EditPad übergeben. Sie können /waitmit oder ohne /newinstancesteuern, ob ein neues EditPad-Fenster geöffnet oder ein vorhandenes Fenster wiederverwendet werden soll. Der von Ihrem Skript gestartete Prozess wartet darauf, dass die Datei geschlossen wird, unabhängig davon, ob ein Fenster erstellt oder wiederverwendet wurde. EditPad Pro 6 und frühere Versionen werden nicht unterstützt /wait.
Jan Goyvaerts

@ JanGoyvaerts ~ Danke für den /waitFlaggentipp, Sir ... :)
Eddie B

Ich konnte EditPad Lite mithilfe der obigen Anweisungen nicht zum Laufen bringen. Vielleicht lag es daran, dass ich versucht habe, EditPad (über Git) über das Windows-Terminal anstelle von Git Bash oder einer anderen UNIX-Shell aufzurufen. Was für mich funktioniert hat, war, den [core]Abschnitt von .gitconfig direkt zu bearbeiten , um die Zeile einzuschließen editor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance".
user697473

8

Für Atom können Sie tun

git config --global core.editor "atom --wait"

und ähnliches für Visual Studio Code

git config --global core.editor "code --wait"

Dadurch wird ein Atom- oder Visual Studio-Code geöffnet geöffnet, durch das Sie sich verpflichten können.

oder für erhabenen Text :

git config --global core.editor "subl -n -w"

Viel einfacher und effektiver. Vielen Dank.
Rom5JP

6

Bearbeiten Sie die .gitconfig-Datei im Ordner c: \ Users \ YourUser und fügen Sie Folgendes hinzu:

[core]
editor = 'C:\\Program files\\path\\to\\editor.exe'

6

Dies ist das einzige Symptom für größere Probleme. Insbesondere, dass Sie etwas Einstellung haben TERM=dumb. Andere Dinge, die nicht richtig funktionieren, sind der lessBefehl, der besagt, dass Sie kein voll funktionsfähiges Terminal haben.

Es scheint, dass dies am häufigsten dadurch verursacht wird, dass TERM in Ihren globalen Windows-Umgebungsvariablen auf etwas festgelegt ist. Für mich trat das Problem auf, als ich Strawberry Perl installierte. Einige Informationen dazu befinden sich im msysgit-Fehler für dieses Problem sowie verschiedene Lösungen.

Die erste Lösung besteht darin, das Problem in Ihrem ~ / .bashrc zu beheben, indem Sie Folgendes hinzufügen:

export TERM=msys

Sie können dies über die Git Bash-Eingabeaufforderung folgendermaßen tun:

echo "export TERM=msys" >> ~/.bashrc

Die andere Lösung, die letztlich ist das, was ich tat , weil ich nicht für das Hinzufügen von etwa Strawberry Perl Gründen ist es egal , TERM=dumbum meine Umgebungseinstellungen, zu gehen und das entfernen , TERM=dumbwie in diesem Kommentar auf dem msysgit Fehlerbericht gerichtet .

In der Systemsteuerung / System / Erweitert / Umgebungsvariablen ... (oder ähnlich, abhängig von Ihrer Windows-Version) werden unter Windows klebrige Umgebungsvariablen festgelegt. Standardmäßig ist TERM nicht festgelegt. Wenn dort TERM eingestellt ist, haben Sie (oder eines der von Ihnen installierten Programme - z. B. Strawberry Perl) es eingestellt. Löschen Sie diese Einstellung, und es sollte Ihnen gut gehen.

Wenn Sie Strawberry Perl verwenden und sich um den CPAN- Client oder ähnliches kümmern , können Sie das in TERM=dumbRuhe lassen und unset TERMin Ihrer ~ / .bashrc-Datei verwenden, was einen ähnlichen Effekt hat wie das Festlegen eines expliziten Begriffs wie oben.

Natürlich sind alle anderen Lösungen insofern korrekt, als Sie git config --global core.editor $MYFAVORITEEDITORsicherstellen können, dass Git Ihren bevorzugten Editor verwendet, wenn er einen für Sie starten muss.


vielen Dank! Ich hatte dieses Problem wegen Strawberry Perl und es hat mich verrückt gemacht! Vielen Dank für den Hinweis
Dmitry Avtonomov


4

PortableGit 1.6 funktionierte einwandfrei, aber nach dem Upgrade auf die Windows-Version PortableGit 1.7 hatte ich Probleme. Einige der Git-Befehle öffnen das Notepad ++. Exe in Ordnung, andere nicht, insbesondere die Git-Rebase verhält sich anders.

Das Problem ist, dass einige Befehle den Windows-Cmd-Prozess ausführen und andere den Unix-Cmd-Prozess verwenden. Ich möchte dem Notepad ++ - Editor Startattribute geben, daher benötige ich ein angepasstes Skript. Meine Lösung ist dies.

  1. Erstellen Sie ein Skript, um einen geeigneten Texteditor auszuführen. Das Skript sieht seltsam aus, behandelt jedoch sowohl die Windows- als auch die Unix-Variante.

    c: /PortableGit/cmd/git-editor.bat

    #!/bin/sh
    # Open a new instance
    
    function doUnix() {
      "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar $*
      exit
    }
    
    doUnix $*
    
    :WINCALL
    "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar %*
    
  2. Legen Sie die globale Variable core.editor fest

    Das Skript wurde im Ordner git / cmd gespeichert, sodass es sich bereits in einem gitconsole-Pfad befindet. Dies ist obligatorisch, da ein vollständiger Pfad möglicherweise nicht ordnungsgemäß funktioniert.

    git config --global core.editor "git-editor.bat"
    

Jetzt kann ich die Masterbefehle git commit -a und git rebase -i ausführen. Probieren Sie es aus, wenn Sie Probleme mit dem Git Windows-Tool haben.


4

Ich verwende Git auf mehreren Plattformen und verwende auf allen Plattformen gerne die gleichen Git-Einstellungen. (Tatsächlich habe ich alle meine Konfigurationsdateien mit Git unter Release-Kontrolle und platziere auf jedem Computer einen Git-Repository-Klon.) Die Lösung, die ich gefunden habe, ist folgende:

Ich habe meinen Editor auf giteditor eingestellt

git config --global core.editor giteditor

Dann erstelle ich einen symbolischen Link namens giteditor , die in meinem ist PATH . (Ich habe ein persönliches bin- Verzeichnis, aber irgendwo im PATH funktioniert es.) Dieser Link verweist auf meinen aktuellen Editor Ihrer Wahl. Auf verschiedenen Computern und Plattformen verwende ich verschiedene Editoren. Dies bedeutet, dass ich meine universelle Git-Konfiguration ( .gitconfig ) nicht ändern muss, sondern nur den Link, auf den giteditor verweist.

Symbolische Links werden von jedem mir bekannten Betriebssystem verarbeitet, obwohl sie möglicherweise unterschiedliche Befehle verwenden. Für Linux verwenden Sie ln -s . Für Windows, verwenden Sie das cmd built-in mklink . Sie haben unterschiedliche Syntaxen (die Sie nachschlagen sollten), aber alles funktioniert wirklich auf die gleiche Weise.


Eigentlich habe ich das unter Windows7 versucht und es funktioniert nicht mit msys git. Es heißterror: cannot spawn giteditor: No such file or directory
DanielSank

4

Auf Vorschlag von VonC funktionierte dies für mich (machte mich verrückt):

git config --global core.editor "'C:/Program Files (x86)/Sublime Text 3/subl.exe' -wait"

Das Weglassen -waitkann zu Problemen führen, insbesondere wenn Sie mit Gerrit arbeiten und IDs ändern, die manuell in den unteren Bereich Ihrer Festschreibungsnachricht kopiert werden müssen.


4

Ich musste beide der folgenden Schritte ausführen, damit Git Notepad ++ unter Windows startet:

  • Fügen Sie .gitconfig Folgendes hinzu:

    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
    
  • Ändern Sie die Verknüpfung, um die Git Bash-Shell zu starten und als Administrator auszuführen, und verwenden Sie sie dann, um die Git Bash-Shell zu starten. Ich vermutete, dass der Kontextmenüeintrag "Git Bash here" Notepad ++ nicht mit den erforderlichen Berechtigungen startete.

Nachdem Sie beide oben genannten Schritte ausgeführt hatten, funktionierte es.


3

Ich benutze Cygwin unter Windows, also benutze ich:

export EDITOR="emacs -nw"

Das -nwist für no-windows, dh sagen Sie Emacs, dass sie nicht versuchen sollen, X Window zu verwenden .

Die Emacs-Tastenkombinationen funktionieren bei mir nicht in einer Windows-Shell, daher würde ich sie nur in einer Cygwin-Shell verwenden ... ( rxvt wird empfohlen.)


3

Dies ist mein Setup, um Geany als Editor für Git zu verwenden:

git config --global core.editor C:/path/to/geany.bat

mit folgendem Inhalt in geany.bat:

#!/bin/sh
"C:\Program Files\Geany\bin\Geany.exe" --new-instance "$*"

Es funktioniert sowohl in einer DOS-Konsole als auch in msysgit.


2
VonC antwortete über Notepad ++, meine Antwort ist für Geany?
CharlesB

2

Es scheint, als würde Git den Editor nicht finden, wenn der Pfad Leerzeichen enthält. Sie müssen also die in Patricks Antwort erwähnte Batch-Datei in einen Nicht-Leerzeichen-Pfad einfügen.


3
Dieses Format funktioniert gut für Pfade mit Leerzeichen: git config --global core.editor "\" c: \ Programme \ textpad 5 \ textpad.exe \ "", daher kann es für Sie praktisch sein, das Erstellen einer Batchdatei zu vermeiden
Carl

2

Ich hatte Schwierigkeiten, Git zur Zusammenarbeit zu bewegen WordPad , Komodo Edit und so ziemlich jedem anderen Editor, den ich gebe, zusammenzuarbeiten. Die meisten sind offen für die Bearbeitung, aber Git wartet eindeutig nicht auf das Speichern / Schließen.

Als Krücke habe ich gerade getan, dh

git commit -m "Fixed the LoadAll method"

Dinge in Bewegung zu halten. Dadurch werden meine Commit-Nachrichten tendenziell etwas kürzer gehalten, als sie wahrscheinlich sein sollten, aber an der Windows-Version von Git muss natürlich noch einiges getan werden.

Die GitGUI ist auch nicht so schlecht. Es braucht ein wenig Orientierung, aber danach funktioniert es ziemlich gut.


2

Ich bevorzuge Emacs. Das Einrichten kann etwas schwierig sein.

  1. Laden Sie Emacs herunter und packen Sie es irgendwo aus c:\emacs .
  2. Lauf c:\emacs\bin\addpm.exe . Sie müssen mit der rechten Maustaste klicken und "Als Administrator ausführen", wenn Sie Windows Vista oder höher verwenden. Dadurch werden die ausführbaren Dateien in Ihren Pfad eingefügt.
  3. Fügen Sie (server-start)irgendwo in Ihrer .emacsDatei hinzu. In den häufig gestellten Fragen zu Emacs Windows finden Sie Hinweise zum Ablegen Ihrer .emacsDatei.
  4. git config --global core.editor emacsclientw

Git öffnet nun Dateien innerhalb eines vorhandenen Emacs-Prozesses. Sie müssen diesen vorhandenen Prozess manuell von ausführen c:\emacs\bin\runemacs.exe.


1

Ich habe es geschafft, die Umgebungsversion zum Laufen zu bringen, indem ich die EDITOR-Variable mit Anführungszeichen und /: gesetzt habe.

EDITOR="c:/Program Files (x86)/Notepad++/notepad++.exe"

1

Ich hatte gerade das gleiche Problem und fand eine andere Lösung. Ich bekam

error: There was a problem with the editor 'ec'

Ich habe VISUAL=eceine Batch-Datei ec.batauf meinem Pfad, die eine Zeile enthält:

c:\emacs\emacs-23.1\bin\emacsclient.exe %*

Auf diese Weise kann ich Dateien über die Befehlszeile bearbeiten ec <filename>, und wenn sie VISUALfestgelegt sind, werden sie auch von den meisten Unixy-Programmen abgerufen. Git scheint den Pfad jedoch anders zu durchsuchen als meine anderen Befehle - als ich mir einen git commitin Process Monitor ansah, sah ich, dass er in jedem Ordner auf dem Pfad nach ecund für suchte ec.exe, aber nicht nach ec.bat. Ich habe eine weitere Umgebungsvariable ( GIT_EDITOR=ec.bat) hinzugefügt und alles war in Ordnung.


1

Ich verwende GitHub für Windows, was eine schöne visuelle Option ist. Ich bevorzuge aber auch die Befehlszeile. Damit sie beim Öffnen eines Repositorys in einer Git-Shell funktioniert, habe ich einfach Folgendes festgelegt:

git config --global core.editor vim

das funktioniert super.



1

Ich habe hier eine sehr einfache Lösung gefunden - obwohl möglicherweise ein Fehler im Pfad vorliegt, in dem Sie die vom Autor angegebene "subl" -Datei kopieren müssen.

Ich verwende Windows 7 x64 und musste die "subl" -Datei in meinen /Git/cmd/Ordner legen, damit sie funktioniert.

Es funktioniert jedoch wie ein Zauber.


1

Atom und Windows 10

  1. Ich habe mit der rechten Maustaste auf das Atom-Symbol auf dem Desktop geklickt und auf Eigenschaften geklickt.
  2. Kopierte den Standortpfad "Start in"
  3. Sah dort mit Windows Explorer und fand "atom.exe".
  4. Ich habe dies in Git Bash eingegeben:

    git config --global core.editor C:/Users/YOURNAMEUSER/AppData/Local/atom/app-1.7.4/atom.exe"
    

Hinweis: Ich habe alles \für geändert /. Ich habe eine .bashrc-Datei in meinem Home-Verzeichnis erstellt und /mein Home-Verzeichnis festgelegt. Es hat funktioniert, daher habe ich angenommen, /dass dies der richtige Weg ist.


Bitte überprüfen Sie diese URL. Es wird nützlich sein, die Qualität Ihrer Inhalte zu verbessern
Willie Cheng

@willie Danke, ich habe den Text formatiert und einige Tags hinzugefügt. Hoffe das wird es ein bisschen verbessern.
Jonathan Ramos

0

Hier ist eine Lösung mit Cygwin:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. Wenn kein Pfad vorhanden ist, übergeben Sie keinen Pfad

  2. Wenn der Pfad leer ist, übergeben Sie den leeren Pfad

  3. Wenn der Pfad nicht leer ist, konvertieren Sie ihn in das Windows-Format.

Dann setze ich diese Variablen:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. Mit EDITOR kann das Skript mit Git arbeiten

  2. Mit GIT_EDITOR kann das Skript mit Hub-Befehlen arbeiten

Quelle


0

Dies funktioniert bei mir mit Cygwin und TextPad 6 (BEARBEITEN: es funktioniert auch mit TextPad 5, solange Sie die offensichtliche Änderung am Skript vornehmen), und vermutlich könnte das Modell auch für andere Editoren verwendet werden:

Datei ~/.gitconfig:

[core]
    editor = ~/script/textpad.sh

Datei ~/script/textpad.sh:

#!/bin/bash

APP_PATH=`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`
FILE_PATH=`cygpath -w $1`

"$APP_PATH" -m "$FILE_PATH"

Dieser Einzeiler funktioniert auch:

Datei ~/script/textpad.sh(Option 2):

"`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`" -m "`cygpath -w $1`"

0

Das hat bei mir funktioniert:

  1. Fügen Sie Ihrer PATH- Variablen das Verzeichnis hinzu, das die ausführbare Datei des Editors enthält . (ZB "C: \ Programme \ Sublime Text 3 \" )
  2. Starte deinen Computer neu.
  3. Ändern Sie die globale Git-Variable core.editor in den Namen der ausführbaren Editordatei ohne die Erweiterung '.exe' (z. B. git config --global core.editor sublime_text).

Das ist es!

HINWEIS: Sublime Text 3 ist der Editor, den ich für dieses Beispiel verwendet habe.


Öffnet Sublime Text 3 bei dieser Konfiguration mehrere Instanzen oder behandelt es die Tatsache, dass Git es schließen muss, um das Ende der Bearbeitung zu signalisieren?
James World

1
Ich denke, es wird ein neues Fenster öffnen. Sie können den Schalter --wait ( sublimetext.com/forum/viewtopic.php?f=3&t=3257 )
nikoskip
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.