#7 Git - merge кофликтов

poster
В этом уроке мы узнаем, почему возникают конфликты в git, научимся их мерджить как руками, так и с помощью Webstorm.
Понравилось? Поделитесь с друзьями!
Понравилось?
Поделитесь с друзьями!
Комментарии
Текст видео

Всем привет. Сегодня мы с вами разберем как мерджить конфликты в гите. Итак, в момент того как мы пишем команду git merge и мерджим фичу в девелоп, например, гит автоматом мерджит все наши файлы между этими двумя ветками. Если это ему не удалось, он вываливает сообщение что у нас конфликт в мердже и его нужно пофиксить руками.

И первый вопрос, конечно же, когда возникают конфликты. Если например 2 разработчика поменяли один и тот же код в файле и гит не может померджить его автоматически, то у нас будет конфликт. Если вы с работы сильно изменили кусок кода, запушили его и дома написали git pull, вполне возможно у вам будет конфликт, который нужно тоже мерджить руками.

Давайте попробуем это сделать. Для начала нам нужно эмулировать конфликт. Давайте создадим новую ветку

git checkout -b conflicted-branch

И изменим файл auth.js. Поменяем в нем знак И на ИЛИ. Также изменим сообщение.

git add .
git commit -m "Changed auth on conflicted-branch"

Теперь представим, что пока мы работали на этой ветке, кто-то поменял develop ветку.

git checkout develop

И вообще уберем проверку пароля. И также изменим сообщение в return.

Сделаем коммит на ветке develop.

git add .
git commit -m "Changed auth.js"

Теперь попробуем померджить фиче ветку в develop.

git merge conflicted-branch

Мы видим сообщение Auto merging failed. Пофиксите конфликты и закоммититесь.

Если мы откроем auth.js, то мы увидим, что файл выглядит немного странно. Он разделен как бы на 2 части. Первая часть подписана HEAD, что значит текущая ветка, а вторая подписана conflicted-branch. Теперь мы вручную должны отредактировать файл, устранив ошибки и символы которые сделал гит.

Убираем стрелки и редактируем код. Теперь достаточно просто сохранить файл и сделать git commit как обычно.

Но как вы понимаете когда изменений на 500 строк в 10ти разных файлах и все их нужно померджить, то делать это руками в редакторе боль и унижение. Поэтому люди пользуются разными впромогательными инструментами для мерджа конфликтов.

Я предпочитаю использовать для этого WebStorm так как на мой взгляд в нем встроен лучший мердж тул. Поэтому давайте откатим изменения и попробуем смерджить все эти конфликты в Webstorm.

Нажимаем VCS - git - resolve conflicts и видим список файлов с конфликтами. Нажимаем merge и видим окно с 3 табами. В левом табе локальные изменения, то есть develop. В правом табе с ветки conflicted-branch, а посередине как будет выглядеть реальный файл после мерджа.

В вебшторме области при мердже бывают зеленые и красные. Зеленых у нас сейчас нет, но это области в которых нет конфликта и которые были просто добавлены с какой-то стороны. Красные области это конфликты.

С помощью стрелок и крестиков можно выбирать что и с какой ветки мы хотим взять. Если же нам ничего не подходит, мы может написать код руками либо скопировать с любой стороны. Давайте выберем return сообщение слева, а условие справа. На остальном жмем крестик.

Вебшторм нам говорит, что конфликтов нет и все хорошо. После этого можно делать коммит как обычно.

Только зарегистрированные пользователи могут оставлять комментарии.  Войдите, пожалуйста.