Код Visual Studio, как разрешить конфликты слияния с git?

114

Я попытался объединить свою ветку с другой веткой, но возник конфликт слияния. В Visual Studio Code (версия 1.2.1) я решил все проблемы, однако, когда я пытаюсь выполнить фиксацию, он продолжает выдавать мне это сообщение:

Прежде чем зафиксировать изменения, вам следует сначала разрешить не объединенные изменения.

Я пробовал погуглить, но не могу понять, почему он не позволяет мне зафиксировать мои изменения, все конфликты исчезли.

Annedroiid
источник
1
Хотя то, что вы сказали, верно, это не решает проблему, поставленную в вопросе. Я прямо заявил, что я уже решил все конфликты слияния в вопросе.
annedroiid

Ответы:

116

С VSCode вы можете легко обнаружить конфликты слияния с помощью следующего пользовательского интерфейса. введите описание изображения здесь

(если у вас нет верхней панели, установите "editor.codeLens": trueв настройках пользователя)

Он указывает текущее изменение, которое у вас есть, и входящие изменения с сервера. Это упрощает разрешение конфликтов - просто нажмите кнопки выше <<<< HEAD.

Если у вас есть несколько изменений и вы хотите применить их все сразу - откройте палитру команд (Вид -> Палитра команд) и начните вводить слияние - появятся несколько вариантов, включая Merge Conflict: Accept Incomingи т. Д.

Саджитаран
источник
1
вы получили последнее обновление! Я буду показывать в каждой строчке
Саджитаран
1
Как получить эти параметры слияния и разрешения конфликтов в коде Visual Studio.
user630209
1
как включить то, любой ярлык ?. Я не вижу эту опцию в моем файле конфликта.
user630209
1
@RyeGuy Эти параметры отображаются через CodeLens, поэтому вы можете включить CodeLens (см. Code.visualstudio.com/Docs/editor/… ).
Geri Borbás
80

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

Annedroiid
источник
1
Да исправить. Любая фиксация, будь то конфликт слияния или локальная фиксация, которую вы пытаетесь отправить, должна быть поставлена, прежде чем вы сможете отправить эту фиксацию.
surendrapanday
1
Для тех, кто сбит с толку, если git add .не все файлы подготовлены, проверьте, находитесь ли вы в корневом каталоге проекта. Мне потребовалось время, чтобы понять это. Затем подготовил git add .все файлы, и это позволило мнеgit merge --continue
bensadiku
И после разрешения конфликта слияния вы должны сначала СОХРАНИТЬ конфликтующий файл перед постановкой слияния изменений.
nclark
22
  1. Нажмите кнопку «Source Control» слева.
  2. См. ОБЪЕДИНЕНИЕ ИЗМЕНЕНИЙ на боковой панели.
  3. У этих файлов есть конфликты слияния.

VS Code> Source Control> Merge Changes (пример)

Джеффри Хейл
источник
1
Раньше у меня были параметры «Принять текущее изменение | Принять входящее изменение ...», но теперь эти параметры просто исчезли из строки, есть идеи, как снова открыть эти параметры?
jet_choong
Это так просто из пользовательского интерфейса. Спасибо, что указали на раздел слияния изменений на боковой панели.
klewis
22

Для тех, кому сложно найти «кнопки слияния».

Маленький значок лампочки с параметрами слияния появляется только при точном нажатии на «маркер конфликта слияния»

<<<<<<<

Шаги (в VS Code 1.29.x):

B12Toaster
источник
15

Сообщение об ошибке, которое вы получаете, является результатом того, что Git все еще думает, что вы не разрешили конфликты слияния. Фактически, у вас уже есть, но вам нужно сообщить Git, что вы сделали это, добавив разрешенные файлы в index.

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

Тим Бигелейзен
источник
4

Для VS Code 1.38 или если вы не смогли найти кнопку "лампочка". Обратите особое внимание на серый текст над конфликтами; есть список действий, которые вы можете предпринять.

Цян Ли
источник