Слияние веток 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-аутсорсинг. Также возможны разовые проектные работы.