Git Commit im Terminal öffnet VIM, kann aber nicht zum Terminal zurückkehren

209

Ich versuche gerade, GitHub zu lernen und mache dieses Git Essentials-Tutorial bei Nettuts. Ich bin in der Lektion über das Festlegen von Commits.

Der Lehrer tippt git commitund es öffnet VIM als seinen Editor (ich möchte auch wissen, wie man es stattdessen in Sublime Text 2 öffnet). Wie auch immer, es öffnet sich in VIM und ich füge in einer Zeile hinzu, dass dies mein erstes Commit ist und drücke auf Speichern .

Als nächstes werde ich aufgefordert, die Ausgabe auf dem Desktop zu speichern, was ich in seinem Screencast nicht gesehen habe. Jetzt bin ich immer noch in VIM und nicht sicher, wie ich zum "normalen" Terminal zurückkehren soll :(

Ich konnte es nicht herausfinden, also verließ ich einfach das Terminal und startete es neu, machte erneut ein Commit und hatte einige Warnmeldungen über Duplikate! Ich bin mir nicht sicher, ob ich (E)editsowieso oder muss (A)abort.

Git-Status

Geben Sie hier die Bildbeschreibung ein

vim

Geben Sie hier die Bildbeschreibung ein

Nachricht, wenn ich das Terminal wieder öffne und git commit erneut mache

Geben Sie hier die Bildbeschreibung ein

Leon Gaban
quelle
3
Wenn
guido
1
Das gleiche Problem hier ... Sobald ich versuche, ein Commit durchzuführen, öffnet das Terminal eine Art Editor, den ich nicht beenden kann. Sehr nervig!
Kokodoko
3
@Kokodoko Ja, ich verpflichte mich git commit -m 'my message'jetzt, das war's :) Ich brauche keinen Editor, brauche nie 1, brauche nur 1 Liner.
Leon Gaban
1
@LeonGaban Short Commit-Nachrichten sind für das erste Commit in Ordnung, aber von da an sollten Sie versuchen, die Technik eines kurzen Betreffs zu übernehmen und dann detailliert zu beschreiben, was tatsächlich in diesem Commit passiert ist.
Liamvictor
1
@LeonGaban Sie sind erstaunlich
Baydi

Antworten:

368

Um Ihre Arbeit zu speichern und zu beenden, drücken Sie Escund dann :wq(w zum Schreiben und q zum Beenden).

Alternativ können Sie sowohl speichern als auch beenden, indem Sie Escund dann drücken:x

Um einen anderen Editor laufen zu setzen export EDITOR=myFavoriteEdiorauf Ihrem Terminal, wo myFavoriteEdiorkann sein vi, gedit, subl(für sublime) usw.

Gille
quelle
7
+1 zur Erläuterung der Befehlssequenz und zum Zeigen, wie bei Bedarf die Editoren gewechselt werden können (aber im Ernst, warum sollte jemand einen anderen Editor als vim verwenden wollen :)
Lieven Keersmaekers
15
NB Ein einfaches :xSpeichern und Beenden vim es ist ein bisschen schneller als :wq;)
Xavier
1
Um den Editor dauerhaft einzustellen, können Sie verwenden: git config --global core.editor myFavoriteEditor
Machta
2
esc key tut nichts für mich. Was ist das für kryptische Befehle, ist das 2016 oder 1996? Unglaublich ...
Oyalhi
1
Funktioniert überhaupt nicht. Ja, ich habe eine Festschreibungsnachricht eingegeben. Vim ist scheiße.
Dave Kielpinski
40

Nicht wirklich die Antwort auf das VIM-Problem, aber Sie können die Befehlszeile verwenden, um auch die Festschreibungsnachricht einzugeben:

git commit -m "This is the first commit"
pkyeck
quelle
19

Sie müssen zum normalen Modus zurückkehren und die Festschreibungsnachricht mit beiden speichern

<Esc>:wq

oder

<Esc>:x

oder

<Esc>ZZ

Die EscTaste bringt Sie vom Einfügemodus in den normalen Modus zurück. Die :wq, :xoder ZZFolge schreibt die Änderungen und beendet den Editor.

Lieven Keersmaekers
quelle
2
Nein ... der Esc-Schlüssel macht nichts. Ich stecke in "Zweigstellenmaster zusammenführen von ..." fest. Bitte geben Sie eine Festschreibungsnachricht ein, um zu erklären, warum diese Zusammenführung erforderlich ist.
Kokodoko
Haben Sie eine Commit-Nachricht eingegeben? Was passiert, wenn Sie drücken <Esc>:wq?
Lieven Keersmaekers
2
In meinem Fall passiert nichts. Was ist das für kryptische Befehle, ist das 2016 oder 1996?
Oyalhi
1
@ Homo-Erectus - Ich habe vor 4 Jahren angefangen, vim zu verwenden, und ich bedaure nur, dass ich nicht früher angefangen habe. Ich halte es nicht für Zeitverschwendung, du solltest es versuchen. Es hat zwar eine steile Lernkurve, aber es wird sich lohnen. Was die Befehle betrifft, habe ich nicht viel hinzuzufügen. Typ <esc>, Typ :, Typ x und das sollte es sein.
Lieven Keersmaekers
@oyalhi Es ist nie spät, mit der Verwendung von vim zu beginnen
Anatoly Yakimchuk
16

Einfach den vim-Befehl "Speichern und Beenden" ausführen :wqsollte den Trick tun.

Damit Git es in einem anderen Editor öffnen kann, müssen Sie die Git- core.editorEinstellung in einen Befehl ändern, mit dem der gewünschte Editor ausgeführt wird.

git config --global core.editor "command to start sublime text 2"

Jani Hartikainen
quelle
4
Vielen Dank für den Tipp, wie Sie den Editor auf erhabenen Text einstellen können. Ich bin jedoch auf ein Problem gestoßen, ich musste ein --waitFlag setzen : git config --global core.editor "subl --wait". Dies verhindertAborting commit due to empty commit message.
Eric
16

Dies ist eine Antwort auf Ihre Frage ...

Ich möchte auch wissen, wie ich es stattdessen in Sublime Text 2 öffnen kann

Für Windows:

git config --global core.editor "'C:/Program Files/Sublime Text 2/sublime_text.exe'"

Überprüfen Sie, ob der Pfad für sublime_text.exekorrekt ist, und passen Sie ihn bei Bedarf an.

Für Mac / Linux:

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

Wenn Sie eine Fehlermeldung erhalten wie:

Fehler: Es gab ein Problem mit dem Editor 'subl -n -w'.

Erstellen Sie den Alias ​​für subl

sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl

Überprüfen Sie erneut, ob der Pfad für Ihren Computer übereinstimmt.

Für Sublime Text speichern cmd Sund schließen Sie einfach das Fenster cmd W, um zu git zurückzukehren.

mhatch
quelle