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

Вы можете разрешить этот конфликт следующим образом:
-
В окне с сообщением о конфликте нажмите Разработка, чтобы открыть ветку, для которой произошел конфликт, в среде разработки. Переключитесь на представление Контроль версий.
-
Нажмите на кнопку Синхронизировать изменения, чтобы получить с сервера измененные данные проекта.

В выпадающем меню раздела Коммит нажмите Объединить.

-
Выберите ветвь проекта, которую хотите слить с текущей веткой.
-
Введите сообщение коммита слияния.

-
После этого в разделе Изменения слияния вы увидите файлы, содержащие конфликты. Они будут отмечены значком К (Конфликт).

В самом файле конфликт слияния будет обозначен следующим образом:

Среда разработки представляет информацию по каждому конфликту и дает возможность выбрать, какое изменение принять. Вы можете оставить текущее изменение; принять изменение, внесенное в ветвь, с которой происходит слияние; применить оба изменения или открыть изменения в отдельной вкладке для более детального сравнения. Также вы можете воспользоваться специальным файловым редактором трехстороннего слияния.
-
После разрешения всех конфликтов проиндексируйте сделанные изменения и нажмите кнопку Завершить слияние и отправить.

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

После успешного завершения операции слияния будет открыто диалоговое окно с предложением синхронизировать сделанные изменения. Нажмите ОК, чтобы выполнить синхронизацию с репозиторием проекта.

Файловый редактор трехстороннего слияния
Для сложных конфликтов или детального сравнения изменений используйте файловый редактор трехстороннего слияния. Редактор состоит из 4 окон:
-
Входящее — отображает изменения из сливаемой ветки.
-
Текущее — текущая локальная версия.
-
База (отображается опционально) — исходное состояние файла.
-
Результат — итоговый вид файла с принятыми изменениями.

Открытие редактора
Для открытия редактора воспользуйтесь одним из способов:
-
Нажмите кнопку Разрешить в редакторе слияния в правом нижнем углу открытого редактора:

-
Воспользуйтесь контекстным меню:

Разрешение конфликтов
-
Проанализируйте различия во всех 4 окнах:
- сравните изменения с исходным файлом (окно База),
- оцените различия между входящей и текущей версиями.
-
Используйте кнопки принятия изменений над областью конфликта:
-
Принять входящее — использовать изменение из сливаемой ветки,
-
Принять текущее — сохранить вашу локальную версию,
-
Пометить как обработанный — сохранить текущее состояние результата.

-
-
В окне Результат отображается текущее состояние файла в зависимости от принятых изменений. В нем вы можете отменить принятые изменения или внести изменения вручную.

-
В правом верхнем углу окна Результат отображается счетчик оставшихся конфликтов, а также кнопка Сброс, которая отменяет принятые изменения.

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

Отменить слияние
Вы можете отменить слияние, которое привело к возникновению конфликта, и вернуть текущую ветку к состоянию до выполнения операции слияния. Для этого выполните одно из следующих действий:
-
Кликните на стрелку рядом с кнопкой Завершить слияние и отправить и нажмите Отменить слияние.

-
Щелкните на имя текущей ветки в панели состояния и выберите команду Отменить слияние в открывшемся меню.
