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?

Null
quelle
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.
Ceyko
quelle
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
18

Mach es einfach.

Geben Sie :wqund einenter

abbas
quelle
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.
OM Bharatiya
quelle
2

Einfacher ist zuerst ESC und dann : x(Kleinbuchstaben).

Ariel Ruiz
quelle
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.

Ayman Elshehawy
quelle
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"`
Lukasz Dynowski
quelle
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.

mdeora
quelle
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
Erik Rybalkin
quelle