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.