Пожалуйста, введите сообщение фиксации, чтобы объяснить, почему это слияние необходимо, особенно если оно объединяет обновленный апстрим в ветку темы.

Я использую Git. Я извлек из удаленного репо и получил сообщение об ошибке:

Пожалуйста, введите сообщение фиксации, чтобы объяснить, почему это слияние необходимо,
особенно если оно объединяет обновленный апстрим в тематическую ветку.

Я пытаюсь ввести сообщение и нажимаю Enter, но ничего не происходит.

Как сообщить Git / Terminal, что я набрал сообщение?

Я использую Терминал в OS X.


person bernie2436    schedule 30.09.2013    source источник
comment
Похоже, что ваш GIT настроен на открытие предварительно настроенного шаблона, и этот шаблон открывается через редактор по умолчанию (vi / vim).   -  person Shunya    schedule 30.09.2013
comment
Прервите это слияние и попробуйте использовать git pull --rebase.   -  person Ankush Jain    schedule 08.06.2018
comment
Form me Shift ZZ решает проблему   -  person papacico    schedule 24.10.2018
comment
@papacico Shift ZZ тоже решает мою проблему   -  person Sajad NasiriNezhad    schedule 13.11.2020
comment
Супер интуитивно понятная команда (нет!). : -s   -  person johey    schedule 27.01.2021
comment
@papacico Комментарий по спасателю жизни. Shift ZZ у меня тоже сработала.   -  person Newbie    schedule 14.04.2021


Ответы (9)


Это не сообщение об ошибке Git, это редактор, поскольку git использует ваш редактор по умолчанию.

Чтобы решить эту проблему:

  1. нажмите "i" (i для вставки)
  2. напишите ваше сообщение о слиянии
  3. нажмите "esc" (выход)
  4. напишите ": wq" (напишите и выйдите)
  5. затем нажмите ввод
person Saad.elzwawy    schedule 30.09.2013
comment
Хорошо, но это при условии, что его редактор vi или vim. - person Gabriele Petronella; 30.09.2013
comment
это чертовски сложно - person Connor Leech; 22.08.2014
comment
Я использую Терминал для Mac (Йосемити), и это решение сработало для меня. - person Ans; 11.03.2015
comment
Если это кому-то помогает, то, как вы помните, это i для вставки, esc - это выход из вставки, а: wq - просто запись и выход. - person Josh Beam; 21.05.2015
comment
Чтобы облегчить жизнь, просто выполните шаг 4: напишите: wq, затем нажмите Enter. - person abbas; 20.01.2016
comment
Как, черт возьми, я должен это помнить: D - person Vlady Veselinov; 18.05.2016
comment
@JoshBeam аааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааа) - person joshmcode; 30.08.2016
comment
У меня такая же проблема. Зафиксировать и нажать из поля A, вытащить из поля B В поле B указано, что это включает слияние, поэтому я включаю сообщение, как в ответе выше. Как только я это сделаю, git status после этого B говорит, что я впереди на 1 коммит, поэтому процесс повторяется. Мне нужно нажать из поля B, хотя git diff показывает, что нет никаких различий, чтобы иметь возможность выполнить последующее извлечение. - person Arno; 06.09.2016
comment
@Wooble Почему это вообще произошло? Я просто сделал git merge master как всегда ... - person Honey; 09.09.2016
comment
Этот ответ актуален до сих пор. - person Cozzbie; 21.09.2016
comment
С таким же успехом это может быть ↑↑ ↓↓ ← → ← → BA - person Wesley Smith; 04.11.2016
comment
Или: x для выхода - person David Douglas; 18.04.2017
comment
Введите: wq. Это, без сомнения, единственная наименее интуитивно понятная вещь, которая когда-либо была разработана кем-либо. Как, черт возьми, кто-нибудь придумал бы, как это сделать ?? !!!!! Jeeezzzz - person Luke Smith; 17.05.2017
comment
Чтобы переключить редактор по умолчанию для git на nano, выполните эту команду: git config --global core.editor "nano" - person Ashraf Slamang; 17.10.2017
comment
Не могли бы вы объяснить эти 2 шага: - 1. нажмите i 2. нажмите esc 3. напишите: wq Что означают эти ярлыки. - person Ram; 25.04.2018
comment
@ Saad.elzwawy Работает нормально. Но не могли бы вы объяснить значение каждого шага. Я просто хочу узнать подробнее. - person Ram; 25.04.2018
comment
Привет, @ Ram, нажмите ii: Insert, чтобы вставить текстовое сообщение для вашего коммита, нажмите esc esc: escape после завершения режима записи и хотите выйти, напишите: wq wq: write-quiet it напишите и сохраните ваше сообщение, затем довольно vim, затем нажмите Ввод - person Saad.elzwawy; 25.04.2018
comment
Почему это появляется внезапно? У меня его не было на последних 10 коммитах. - person TMOTTM; 25.07.2018
comment
@TMOTTM это происходит, когда вы объединяетесь с другой веткой, например: предположим, что ваше текущее имя ветки - xx, и вы хотите объединить его с yy, тогда ваше сообщение write: git pull origin yy ..... в этом сообщении появится. - person Saad.elzwawy; 25.07.2018
comment
@hipoglucido Ничто не говорит о необходимости использования Vim! Просто настройте Git для использования другого редактора; тот, который вам нравится. См. мой ответ, чтобы узнать, как это сделать. - person oligofren; 02.07.2019
comment
Вам буквально нужно ввести коды запуска, чтобы выполнить фиксацию ... вы должны просто нажать Enter и готово. - person Henry Thomas; 29.05.2020
comment
Я ненавижу это так же сильно, как и восхищаюсь им. - person Tiago César Oliveira; 19.11.2020
comment
Для всех запутанных: эта последовательность не имеет ничего общего с Git. Иногда Git запрашивает сообщение о фиксации (попробуйте git commit без предоставления сообщения, и должно произойти то же самое), и он делает это, открывая текстовый редактор, установленный в Git по умолчанию. В ОС на базе Linux это обычно Vim: текстовый редактор, который фокусируется на работе с минимальным нажатием клавиш. Инструкции в этом ответе - это нажатия клавиш для написания сообщения, сохранения и выхода из редактора. Согласен, это выглядит странно, если вы никогда не использовали Vim, но эта странно выглядящая последовательность действительно не имеет ничего общего с Git. - person Eldrax; 14.01.2021
comment
очень удобно! - person Andrea Scarafoni; 10.02.2021
comment
@WesleySmith Я думаю, это похоже на выполнение Fatality на MK 2 в 90-х, за исключением одного неправильного ключа, и фатальность в конечном итоге на нас. Тем не менее, это отлично сработало для меня в Android Studio Terminal для Mac. - person Josh; 18.03.2021
comment
7 год спустя спасибо XD - person Dario; 18.06.2021
comment
write: wq означает, что когда вы набираете: он начинает печатать в нижней строке, там вы набираете wq. для меня это было не очевидно - person Alessandro Sassi; 23.06.2021

Собственно это не ошибка! Это означает, что вы должны ввести какое-то сообщение, чтобы отметить это слияние. Моя ОС - Ubuntu 14.04. Если вы используете ту же ОС, вам просто нужно сделать это следующим образом:

  1. Напишите какое-нибудь сообщение

  2. Ctrl C O

  3. Введите имя файла (например, «Merge_feature01») и нажмите Enter.

  4. Ctrl X для выхода

Теперь, если вы перейдете в .git и найдете файл "Merge_feature01", это, на самом деле, журнал слияния.

person xiaohu Wang    schedule 27.06.2015
comment
Интересно, как кто-то мог это узнать? Так странно, как это работает. Спасибо, что ответили на это. - person Adrian Carr; 27.09.2015
comment
@ScottyBlades, с какой стати? вопрос помечен как osx, и этот ответ касается того, как Ubuntu устанавливает совершенно другую настройку для Git (с использованием nano или pico), которая не применима к настройке OS X. Это никоим образом не поддается обобщению, а также не дает представления о том, как это работает, отсюда и комментарий, оставленный @AdrianCarr. Теперь есть гораздо лучшие ответы. - person oligofren; 10.11.2017
comment
Как зовут редактора, соответствующего этому ответу? - person J. Mini; 19.06.2020
comment
Похоже, что это предполагает, что ваш редактор nano. Внизу есть неприятная полоса, которая сообщает вам о некоторых сочетаниях клавиш. - person tripleee; 04.08.2020

tl; dr Установите в редакторе что-нибудь более приятное, например Sublime или Atom

Здесь хороший используется в значении редактора, который вам нравится или кажется более удобным для пользователя.

Основная проблема заключается в том, что Git по умолчанию использует редактор, который слишком неинтуитивен для большинства людей: Vim. Не поймите меня неправильно, я люблю Vim, и хотя вы можете выделить немного времени (например, месяц) изучить Vim и попытаться понять, почему некоторые люди считают Vim лучшим редактором из существующих. Есть более быстрый способ решить эту проблему :-)

Исправление заключается не в запоминании загадочных команд, как в принятом ответе, а в настройке Git для использования редактора, который вам нравится и понятен! На самом деле это так же просто, как настроить любой из этих параметров.

  1. настройка конфигурации git core.editor (для каждого проекта или глобально)
  2. переменная среды VISUAL или EDITOR (работает и для других программ)

Я расскажу о первом варианте для пары популярных редакторов, но на GitHub есть отличный это руководство для многих редакторов.

Чтобы использовать Atom

Прямо из его документации, введите это в терминал: git config --global core.editor "atom --wait"

Git обычно ожидает завершения команды редактора, но поскольку Atom немедленно переходит в фоновый процесс, это не сработает, если вы не укажете ему параметр --wait.

Чтобы использовать Sublime Text

По тем же причинам, что и в случае с Atom, вам нужен специальный флаг, чтобы сигнализировать процессу, что он не должен переходить в фоновый режим:

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

person oligofren    schedule 10.11.2017
comment
Vim не занимает месяца. это займет два дня, и вы никогда не забудете, если у вас будет удобная шпаргалка, которая вам понадобится время от времени, сначала. - person user264431; 17.06.2019
comment
Используйте редактор терминала CUA, например micro: micro-editor.github.io. - person Gringo Suave; 18.06.2021

Просто делать,

CTRL + X

CTRL + C

Вам будет предложено сохранить файл, нажмите Y, после чего все будет готово.

person Mandeep Singh    schedule 10.05.2018
comment
Это если ваш редактор по умолчанию - pico или nano. Приведенные выше комментарии следует использовать, если вашим редактором по умолчанию является vim. - person JacKeown; 17.10.2019

Вместо этого вы можете git Ctrl Z и повторить фиксацию, но на этот раз добавьте «-m» с сообщением в кавычках после него, тогда он выполнит фиксацию, не запрашивая вас с этим. страница.

person hgrov52    schedule 12.07.2017
comment
lol, это определенно решит проблему OP. git commit -m 'I did blah' - person James M. Lay; 01.02.2018
comment
У меня есть git версии 1.7.11.4 на терминале Linux, и, несмотря на то, что я передаю сообщение git commit -m или сообщение git commit --message, редактор время от времени выскакивает, запрашивая сообщение. Кто-нибудь знает, почему параметр -m игнорируется? - person pglpm; 02.08.2018

Поскольку в вашем локальном репозитории впереди несколько коммитов, git пытается объединить ваш пульт с вашим локальным репозиторием. Это можно сделать с помощью слияния, но в вашем случае, возможно, вы ищете rebase, то есть добавьте свою фиксацию в начало. Вы можете сделать это с помощью

git rebase or git pull --rebase

Вот хорошая статья, объясняющая разницу между git pull и git pull --rebase.

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

person Ankush Jain    schedule 08.06.2018
comment
Это не имеет прямого отношения к этой проблеме: как мне сообщить Git / Terminal, что я закончил вводить свое сообщение ?. Пользователь должен установить свой редактор в глобальной конфигурации git или установить переменную EDITOR. - person oligofren; 18.06.2021

В моем случае я получил это сообщение после слияния. Решение: нажмите esc, после этого введите: qa!

person Vladimir    schedule 14.07.2020
comment
Действительно ли это полезный ответ по прошествии более 6 лет? ... - person mate00; 14.07.2020
comment
Я так думаю, потому что я вчера столкнулся с этим - person Vladimir; 15.07.2020
comment
Это лишнее и покрывается принятым ответом. - person oligofren; 18.06.2021

У меня была такая же проблема, когда я использовал GIT bash для слияния основной ветки с моей функциональной веткой. Я выполнил следующие шаги, чтобы преодолеть это.

  1. нажмите 'i' (чтобы вставить сообщение о слиянии)
  2. напишите ваше сообщение о слиянии
  3. нажмите кнопку esc (чтобы вернуться)
  4. write ': wq' (написать и выйти)
  5. затем нажмите ввод
person Chamila Maddumage    schedule 02.02.2021

Я обнаружил ошибку, потому что я был новичком в git, вы должны проверить, правильно ли вы ввели синтаксис

я ошибся и написал git commit

и получил ту же ошибку

использовать git commit -m 'some comment'

и вы не увидите страницу с

person AyushPayasi    schedule 30.04.2020
comment
это неправильно. вам будет предложено использовать редактор в нескольких случаях, при внесении изменений, при слияниях и т. д., просто исправьте свой редактор. - person oligofren; 18.06.2021