Bitte geben Sie eine Festschreibungsnachricht ein, um zu erklären, warum diese Zusammenführung erforderlich ist, insbesondere wenn ein aktualisierter Upstream in einem Themenzweig zusammengeführt wird


515

Ich benutze Git. Ich habe einen Pull von einem Remote-Repo ausgeführt und eine Fehlermeldung erhalten:

Bitte geben Sie eine Commit-Nachricht ein, um zu erklären, warum diese Zusammenführung erforderlich ist,
insbesondere wenn ein aktualisierter Upstream in einem Themenzweig zusammengeführt wird.

Ich versuche eine Nachricht einzugeben und drücke, Enteraber es passiert nichts.

Wie kann ich Git / Terminal mitteilen, dass ich mit dem Eingeben meiner Nachricht fertig bin?

Ich verwende Terminal unter OS X.


3
Es scheint, dass Ihr GIT so konfiguriert ist, dass eine vorkonfigurierte Vorlage geöffnet wird und diese Vorlage über den Standardeditor (vi / vim) geöffnet wird.
Shunya

Brechen Sie diese Zusammenführung ab und versuchen Sie, git pull --rebase zu verwenden.
Ankush Jain

3
Form me "Shift ZZ" löst das Problem
Papacico

Antworten:


1189

Es ist keine Git-Fehlermeldung, sondern der Editor, da Git Ihren Standardeditor verwendet.

Um dies zu lösen:

  1. Drücken Sie "i" (i zum Einfügen)
  2. Schreiben Sie Ihre Zusammenführungsnachricht
  3. drücke "esc" (Escape)
  4. schreibe ": wq" (schreibe & beende)
  5. Drücken Sie dann die Eingabetaste

7
Ok, aber dies setzt voraus, dass sein Editor vioder ist vim.
Gabriele Petronella

106
das ist hella kompliziert
Connor Leech

92
Herr, ich hasseVi
Sobiaholic

153
Wenn es jemandem hilft, erinnern Sie sich daran, dass "i" für "Einfügen" steht, "esc" das Beenden der Einfügung ist und ": wq" nur "schreiben" und "beenden" ist.
Josh Beam

83
Dies könnte genauso gut sein ↑↑ ↓↓ ← → ← → BA
Wesley Smith

39

Eigentlich ist es kein Fehler! Es bedeutet, dass Sie eine Nachricht eingeben sollten, um diese Zusammenführung zu markieren. Mein Betriebssystem ist Ubuntu 14.04. Wenn Sie dasselbe Betriebssystem verwenden, müssen Sie dies nur wie folgt tun:

  1. Geben Sie eine Nachricht ein

  2. CtrlCO

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

  4. CtrlX beenden

Wenn Sie nun zu .git gehen und die Datei "Merge_feature01" finden, ist dies tatsächlich das Zusammenführungsprotokoll.


6
Ich frage mich, woher jemand das wissen würde. Es ist so seltsam, wie das funktioniert. Vielen Dank für die Beantwortung.
Adrian Carr

@ ScottyBlades warum um alles in der Welt sollte es? Die Frage ist mit osx gekennzeichnet. Diese Antwort betrifft, wie Ubuntu ein völlig anderes Setup für Git (mit nanooder pico) einrichtet, das für das OS X-Setup nicht gilt. Es ist in keiner Weise verallgemeinerbar und bietet auch keinen Einblick in die Funktionsweise, daher der Kommentar von @AdrianCarr. Es gibt jetzt weitaus bessere Antworten.
Oligofren

27

Stellen Sie den Editor auf etwas Schöneres ein, wie Sublime oder Atom

Hier wird nice im Sinne eines Editors verwendet, den Sie mögen oder benutzerfreundlicher finden .

Das zugrunde liegende Problem ist, dass Git standardmäßig einen Editor verwendet, der für die meisten Benutzer zu unintuitiv ist: Vim. Versteh mich nicht falsch, ich liebe Vim, und obwohl du etwas Zeit (wie einen Monat) einplanen könntest , um Vim zu lernen und zu verstehen, warum manche Leute Vim für den größten existierenden Editor halten, gibt es einen schnelleren Weg dieses Problem zu beheben :-)

Das Update besteht nicht darin, sich kryptische Befehle zu merken , wie in der akzeptierten Antwort, sondern Git so zu konfigurieren, dass ein Editor verwendet wird, den Sie mögen und verstehen! Es ist wirklich so einfach wie das Konfigurieren einer dieser Optionen

  1. die Git-Konfigurationseinstellung core.editor(pro Projekt oder global)
  2. die VISUALoder EDITORUmgebungsvariable (dies funktioniert auch für andere Programme)

Ich werde die erste Option für einige beliebte Editoren behandeln, aber GitHub hat auch für viele Editoren eine ausgezeichnete Anleitung dazu.

Atom benutzen

Geben Sie dies direkt aus den Dokumenten in ein Terminal ein: git config --global core.editor "atom --wait"

Git wartet normalerweise, bis der Editor-Befehl beendet ist, aber da Atom sofort zu einem Hintergrundprozess wechselt, funktioniert dies nicht, es sei denn, Sie geben ihm die --waitOption.

Sublime Text verwenden

Aus den gleichen Gründen wie im Fall Atom benötigen Sie ein spezielles Flag, um dem Prozess zu signalisieren, dass er nicht in den Hintergrund treten soll:

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


Vim braucht keinen Monat. Es dauert zwei Tage und Sie vergessen nie, solange Sie einen handlichen Spickzettel aufbewahren, den Sie zunächst von Zeit zu Zeit benötigen.
user264431

22

Mach einfach,

CTRL + X

CTRL + C

Sie werden aufgefordert, die Datei zu speichern. Drücken Sie Y, dann sind Sie fertig.


Dies ist der Fall, wenn Ihr Standardeditor "pico" oder "nano" ist. Die obigen Kommentare sollten verwendet werden, wenn Ihr Standardeditor vim ist.
JacKeown

7

Hier werden Sie nach einer Nachricht gefragt, die mit Ihrer Zusammenführung in Verbindung steht, um später darauf zurückgreifen zu können, warum Sie diese Zusammenführung durchgeführt haben.

press "i"
on top above on #lines write your message
press "esc" button
write ":wq" (it will write in bottom automatically)
press enter

6

Stattdessen können Sie CtrlZdas Commit git und erneut versuchen, aber dieses Mal "-m" mit einer Nachricht in Anführungszeichen hinzufügen, dann wird es festgeschrieben, ohne dass Sie dazu aufgefordert werden.


3
lol das würde definitiv das Problem des OP lösen. git commit -m 'I did blah'
James M. Lay

Ich habe git Version 1.7.11.4 auf einem Linux-Terminal und trotz der Tatsache, dass ich git commit -m "message" oder git commit --message "message" gebe, erscheint der Editor von Zeit zu Zeit und fordert eine Nachricht an. Weiß jemand, warum der Schalter "-m" ignoriert wird?
pglpm

4

Da Ihr lokales Repository nur wenige Commits vor sich hat, versucht git, Ihre Fernbedienung mit Ihrem lokalen Repo zusammenzuführen. Dies kann über die Zusammenführung erfolgen. In Ihrem Fall suchen Sie jedoch möglicherweise nach einer Neueinstellung, dh fügen Sie Ihr Commit ganz oben hinzu. Sie können dies mit tun

git rebase oder git pull --rebase

Hier ist ein guter Artikel, der den Unterschied zwischen git pull& erklärt git pull --rebase.

https://www.derekgourlay.com/blog/git-when-to-merge-vs-when-to-rebase/


0

So fügen Sie eine Nachricht in Android Studio Terminal mit Ihrer Zusammenführung. Dies ist für Mac-Benutzer.

  • Schritt eins - Drücken Sie "i"
  • Schritt zwei - Geben Sie Ihre Nachricht nach "#" ein.
  • Schritt drei - Drücken Sie "esc"
  • Schritt vier - schreiben Sie ganz unten ": wq"
  • Schritt fünf - Drücken Sie "Enter"

Sie sind alle mit Ihrer Zusammenführung fertig. Anschließend können Sie weiter daran arbeiten, entweder nachher zu Ihrem lokalen Standort zu ziehen oder einen neuen Zweig zu erstellen.


0

Es ist keine Git-Fehlermeldung, sondern der Editor git verwendet Ihren Standardeditor.

Um dies zu lösen:

  1. Drücken Sie "i"
  2. Schreiben Sie Ihre Zusammenführungsnachricht
  3. Drücken Sie "esc"
  4. schreibe ": wq"
  5. und drücken Sie die Eingabetaste

Erläuterung

Die Art und Weise, wie Sie sich daran erinnern, ist, dass "i" für "Einfügen" steht, "esc" das Beenden der Einfügung ist und ": wq" nur "Schreiben" und "Beenden" ist.


0

Dies ist kein Fehler. Sie müssen eine Massege für diese Zusammenführung hinzufügen

um dies zu lösen:

  1. Drücke "i", um deine Massege einzufügen
  2. schreibe deine Massege
  3. Drücken Sie "esc"
  4. schreibe ": wq" (schreibe und beende, um die Massege zu speichern und zu beenden)
  5. Drücken Sie Enter"

-1

Ich habe den Fehler gefunden, weil ich neu in Git war. Sie müssen überprüfen, ob Sie die richtige Syntax eingegeben haben

Ich habe einen Fehler gemacht und geschrieben git commit

und bekam den gleichen Fehler

verwenden git commit -m 'some comment'

und Sie werden die Seite mit nicht sehen

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.