Git - merge кофлікт

Всім привіт. Сьогодні ми з вами розберемо як мерджіть конфлікти в гіті. Отже, в момент того як ми пишемо команду git merge і мерджім фичу в Девелоп, наприклад, гіт автоматом мерджіт всі наші файли між цими двома гілками. Якщо це йому не вдалося, він вивалює повідомлення що у нас конфлікт в мердже і його потрібно пофиксить руками.

І перше питання, звичайно ж, коли виникають конфлікти. Якщо наприклад 2 розробника поміняли один і той же код в файлі і гіт не може померджіть його автоматично, то у нас буде конфлікт. Якщо ви з роботи сильно змінили шматок коду, запущено його і вдома написали git pull, цілком можливо у вас буде конфлікт, який потрібно теж мерджіть руками.

Давайте спробуємо це зробити. Для початку нам потрібно емулювати конфлікт. Давайте створимо нову гілку

І змінимо файл auth.js. Поміняємо в ньому знак І на АБО. Також змінимо повідомлення.

Тепер уявімо, що поки ми працювали на цій гілці, хтось поміняв develop гілку.

І взагалі приберемо перевірку пароля. І також змінимо повідомлення в return.

Зробимо Комміт на гілці develop.

Тепер спробуємо померджіть фиче гілку в develop.

Ми бачимо повідомлення Auto merging failed. Виправлено конфлікти і закоммітітесь.

Якщо ми відкриємо auth.js, то ми побачимо, що файл виглядає трохи дивно. Він розділений як би на 2 частини. Перша частина підписана HEAD, що означає поточна гілка, а друга підписана conflicted-branch. Тепер ми вручну повинні відредагувати файл, усунувши помилки і символи які зробив гіт.

Прибираємо стрілки і редагуємо код. Тепер досить просто зберегти файл і зробити git commit як зазвичай.

Я вважаю за краще використовувати для цього WebStorm так як на мій погляд в ньому вбудований кращий мердж тул. Тому давайте відкинути редагування і спробуємо смерджіть всі ці конфлікти в Webstorm.

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

У вебшторме області при мердже бувають зелені та червоні. Зелених у нас зараз немає, але це області в яких немає конфлікту і які були просто додані з якогось боку. Червоні області це конфлікти.

За допомогою стрілок і хрестиків можна вибирати що і з якою гілки ми хочемо взяти. Якщо ж нам нічого не підходить, ми може написати код руками або скопіювати з будь-якого боку. Давайте виберемо return повідомлення зліва, а умова справа. На іншому тиснемо хрестик.

Вебшторм нам говорить, що конфліктів немає і все добре. Після цього можна робити Комміт як зазвичай.