github sperrt das Mac-Terminal, wenn der Pull-Befehl verwendet wird


95

Ich bin gerade dabei, Github auf einem Mac (Befehlszeile) zu lernen, und wann immer ich es tue, git pull origin masterbekomme ich das

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
".git/MERGE_MSG" 7L, 293C

Das Terminal scheint zu blockieren und erlaubt mir nicht, sofort etwas einzugeben. Wenn es mir dann endlich erlaubt, Text einzugeben, scheint es, als würde es keine Git-Befehle erkennen.

Ist das ein Fehler in Git oder fehlt mir etwas?


5
Ist es wirklich blockiert oder kennen Sie es einfach nicht vi?
Edward Thomson

2
Ich kann dir nicht genau sagen warum, aber git möchte, dass du eine Commit-Nachricht eingibst, und du bist höchstwahrscheinlich im Texteditor vim.
Misch

ah ich verstehe, ja ich bin nicht vertraut mit vim. Wie gebe ich den Kommentar ein und speichere ihn, um fortzufahren?
Null

7
Geben Sie ieinen Kommentar und drücken Sie esc und Typ einzufügen:wq
Scott Harwell

1
Wenn Sie nicht vertraut visind, sind Sie nicht eingesperrt?
Ben Racicot

Antworten:


225

Du bist im Texteditor, vim! Es ist ein modaler Texteditor, daher müssten Sie:

  1. Drücken Sie i, um den Einfügemodus aufzurufen .
  2. Jetzt können Sie Ihre Nachricht so eingeben, als wären Sie in einem normalen (nicht modalen) Texteditor.
  3. Drücken Sie esc, um zum Befehlsmodus zurückzukehren .
  4. Geben Sie dann :wgefolgt von enterzum Speichern ein.
  5. Schließlich :qgefolgt von enterzu beenden.

4
Es ist großartig, dass Git einfach davon ausgeht, dass jeder Vim kennt.
user124384

2
@ user124384 Git versucht, Ihre $EDITORUmgebungsvariable zu verwenden, greift jedoch auf zurück, viwenn keine gefunden werden kann. Sie können den Fallback über Git-Konfigurationen konfigurieren core.editor. Siehe git-scm.com/book/en/v2/…
ceyko

wo kann ich geben i?
Val Do

1
@ val-kharitonashvili Auf einer Querty-Tastatur befindet sie sich neben uund o;) Aber wirklich, solange das Terminal den Fokus hat, sollte es funktionieren.
Ceyko

Warum passiert das überhaupt? Ich habe es immer getan git merge masterund in den letzten 2 Tagen sehe ich das ...
Honey


2

Der Editor scheint gemäß Ihren Beschreibungen vim zu sein. Diese Konsole fordert Sie lediglich auf, eine Nachricht für das Commit zu schreiben, das Sie ausführen möchten, und ist dabei obligatorisch.

  • Geben iSie einfach ein und Sie gelangen in den -- INTER --Modus. Jetzt können Sie Ihre Kommentare schreiben.

  • Drücken Sie nach dem Schreiben die escTaste auf Ihrer Tastatur und Sie gelangen in den Befehlsmodus. ( siehe unten auf der Konsole )

  • Speichern Sie nun die Änderungen durch Schreiben :wund Drücken der enterTaste

Schreiben des Befehls <code>: w </ code>

  • Sie können jetzt beenden, indem Sie schreiben und :qanschließend die enterTaste drücken

Schreiben des Befehls <code>: q </ code>

  • Hurra! Endlich sind Sie wieder in der Hauptkonsole.


1

Führen Sie diesen Befehl aus

git config --global core.editor "gedit"

Fügen Sie Ihre Nachricht in diese Datei ein und speichern Sie sie. Geh zurück und zieh jetzt.


0

Ich habe dieses Problem behoben, indem ich die folgenden Schritte ausgeführt habe

  1. Entfernen Sie # MERGE_MSG #

    rm .git/\#MERGE_MSG#

  2. Entfernen Sie MERGE_HEAD

    rm .git/MERGE_HEAD

Außerdem setze ich den Editor von git explizit auf einen Editor, den ich mit vim kenne (Sie können nano einstellen ).

`git config --global core.editor "vim"`

0

Du kannst tun git checkout --merge yourbranch

Eine Drei-Wege-Zusammenführung zwischen dem aktuellen Zweig, dem Inhalt Ihres Arbeitsbaums und dem neuen Zweig ist abgeschlossen, und Sie befinden sich im neuen Zweig.


0

Probleme treten normalerweise auf, wenn wir etwas falsch schreiben.
Es ist wahrscheinlicher, dass Sie an diesem Befehl interessiert sind:

git commit -m "message"

Wenn es ein Problem gab, könnte es so etwas wie sagen

Your branch and 'origin/master' have diverged,
and have 2 and 1 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)

und verwenden:

git pull

was führen sollte zu:

Already up-to-date.

Dann ist es gut zu überprüfen:

git status

und versuchen Sie es erneut:

git push
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.