+7 495 230 03 03 8 800 222 50 03
DevOps

Разрешение конфликтов при слиянии веток в git

Слияние веток Git является основным процессом при работе у разработчиков. Бывает так, что разработчики в своих разных ветках изменяют один и тот же файл, а также одно и тоже место.

Git может автоматически объединить файлы, если они были изменены в разных местах и на разных строках.

Но, если Git не справился автоматически, то придется исправлять конфликты вручную.

Для этого рассмотрим несколько конфликтов при слиянии.

Игнорировать конфликт

Если не готовы заниматься решением конфликтов, то можно ввести:

$ git merge --abort

Эта команда попытается откатить состояние до того, что было до запуска слияния.

Конфликт, решаемый последним действием

Предположим, что пришлось делать слияние из ветки feature в ветку develop. Мы переключаемся в ветку feature и выполняем следующую команду.

$ git merge develop
Auto-merging test.conf
CONFLICT (content): Merge conflict in test.conf
Automatic merge failed; fix conflicts and then commit the result.

Если мы откроем файл на который ссылается ошибка “test.conf”, то можем увидеть следующий текст:

$ cat test.conf
<<<<<<< HEAD
Version5 - Изменение для branch feature

=======
Version4.1 - Ветка branch develop
>>>>>>> develop

Можем посмотреть git log каждой ветки и выбрать последнее по времени изменение в наших ветках.

$ git log --oneline --left-right HEAD...MERGE_HEAD
> f099a6c (develop) New version 4.1
< f054b69 (HEAD -> feature/new-site) New version in feature
< f4cb127 Add text for feature
< c5e28e9 (gitlab/feature/new-site) New file static site

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

Смотрим изменения, которые происходили в коммите:

$ git show f099a6c
 New version 4.1
diff --git a/test.conf b/test.conf
index 2937fe3..d4867e4 100644
--- a/test.conf
+++ b/test.conf
@@ -1 +1 @@
-Version4 - Ветка branch develop
+Version4.1 - Ветка branch develop

Видим последние изменения и меняем файл test.conf по последнему коммиту.

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

$ git merge develop
Already up to date.

Нужна помощь? Настройки и обслуживание git мы осуществляем в рамках услуги DevOps-аутсорсинг. Также возможны разовые проектные работы.

Дата публикации: 1 февраля 2022
Не нашли ответа на свой вопрос?

Смотрите также

Обсуждение материала

Содержание

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных
Быстрое внедрение включает:
На сервере установлено следующее ПО (доступно при подключении по протоколу RDP):
Также настроено:
Перед внедрением клиент предоставляет информацию о пользователях (логины и пароли). После завершения работ, клиенту высылается инструкция и ярлык для подключения.
Индивидуальное внедрение по ТЗ клиента обсуждается отдельно.