837 Stimmen

Bitte geben Sie eine Commit-Nachricht ein, um zu erklären, warum dieser Merge notwendig ist, insbesondere wenn er ein aktualisiertes Upstream in einen Themenbranch zusammenführt.

Ich benutze Git. Ich habe ein Pull von einem Remote-Repo gemacht und eine Fehlermeldung erhalten:

Bitte geben Sie eine Commit-Nachricht ein, um zu erklären, warum dieser Merge notwendig ist, besonders wenn es sich um ein aktualisiertes Upstream in einen Themen-Zweig handelt.

Ich versuche eine Nachricht einzugeben und drücke Enter, aber nichts passiert.

Wie sage ich Git/Terminal, dass ich mit der Eingabe meiner Nachricht fertig bin?

Ich benutze Terminal auf OS X.

1998voto

Saad.elzwawy Punkte 20234

Die Commit-Nachricht stammt von Git, aber eigentlich ist es der Editor, der verhindert, dass Sie beenden. Dies liegt daran, dass Git Ihren Standardeditor verwendet, der aus verschiedenen Gründen normalerweise auf vi eingestellt ist (es könnte etwas anderes auf Ihrem Betriebssystem sein, wie pico).

Um eine Commit-Nachricht zu schreiben und VI zu verlassen, befolgen Sie diese Schritte:

  1. drücken Sie i (i für einfügen)
  2. schreiben Sie Ihre Merge-Nachricht
  3. drücken Sie esc (escape)
  4. schreiben Sie :wq (schreiben & beenden)
  5. dann drücken Sie die Eingabetaste

Sie können Git auch konfigurieren, um einen anderen Editor zu verwenden, um VI (oder dessen enge Verwandten VIM) zu vermeiden.

76voto

xiaohu Wang Punkte 859

Eigentlich ist es kein Fehler! Es bedeutet, dass Sie eine Nachricht eingeben sollten, um diesen Merge zu kennzeichnen.

Mein Betriebssystem ist Ubuntu 14.04. Wenn Sie das gleiche Betriebssystem verwenden, müssen Sie folgendes tun:

  1. Geben Sie eine Nachricht ein

  2. StrgCO

  3. Geben Sie den Dateinamen ein (wie "Merge_feature01") und drücken Sie Enter

  4. StrgX zum Beenden

Jetzt gehen Sie zu .git und Sie werden die Datei "Merge_feature01" finden, das ist eigentlich der Mergeverlauf.

56voto

oligofren Punkte 17762

Tl;dr Verwenden Sie einen $EDITOR, den Sie mögen!

Die Lösung besteht nicht darin, kryptische Befehle auswendig zu lernen, wie im akzeptierten Antwortbeitrag, sondern Git so zu konfigurieren, dass ein Editor verwendet wird, den Sie mögen und verstehen!

Das zugrunde liegende Problem ist, dass Git standardmäßig einen Editor verwendet, der für die meisten Menschen zu unübersichtlich ist: Vim. Das liegt daran, dass Vim überall präsent ist, nicht weil er benutzerfreundlich ist. Aber lassen Sie mich klarstellen, ich liebe Vim, und während Sie sich Zeit nehmen könnten, Vim zu lernen und zu verstehen, warum einige Leute Vim für den besten Editor halten, gibt es einen schnelleren Weg, um dieses Problem zu beheben :-)

Es ist wirklich so einfach wie das Konfigurieren einer dieser Optionen

  1. die Git-Konfigurationseinstellung core.editor (pro Projekt oder global)
  2. die Umgebungsvariable VISUAL oder EDITOR (dies funktioniert auch für andere Programme). Typischerweise fügen Sie export VISUAL="vscode --wait" in Ihre .bashrc oder eine ähnliche Konfiguration ein.

Ich werde die erste Option für ein paar beliebte Editoren abdecken, aber GitHub hat auch einen ausgezeichneten Leitfaden dazu für viele Editoren.

Um Atom zu verwenden

Direkt aus der Dokumentation von Atom, geben Sie dies in ein Terminal ein:

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

Normalerweise wartet Git darauf, dass der Editor-Befehl abgeschlossen ist, bevor es weitergeht, aber da Atom sofort zu einem Hintergrundprozess wird, funktioniert dies nicht, es sei denn, Sie geben ihm die Option --wait. Dies macht es zu einem Vordergrundprozess, so wie wir es wollen.

Um Sublime Text zu verwenden

Aus den gleichen Gründen wie im Atom-Fall benötigen Sie eine spezielle Option, um dem Prozess zu signalisieren, dass er nicht zu einem Hintergrundprozess werden soll:

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

Um Visual Studio Code zu verwenden

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

45voto

Mandeep Singh Punkte 767

Einfach machen,

STRG + X

STRG + C

Es wird Sie auffordern, die Datei zu speichern. Drücken Sie Y, dann sind Sie fertig.

11voto

hgrov52 Punkte 119

Stattdessen könntest du StrgZ eingeben und den Commit erneut versuchen, aber dieses Mal " -m " mit einer Nachricht in Anführungszeichen hinzufügen, dann wird er ohne Aufforderung mit dieser Seite commiten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X