Skip to main content

Що таке конфлікт при merge?

Конфлікт при git merge - це ситуація, коли Git не може автоматично об'єднати зміни, тому що в двох гілках змінені одні й ті самі частини коду.

Кажучи просто: Git не розуміє, яку версію обрати, і просить людину вирішити це вручну.


Коли виникає конфлікт

Конфлікт з'являється, якщо:

  • у двох гілках
  • були змінені одні й ті самі рядки файлу
  • після спільного коміту-предка

Приклад:

  • у гілці main рядок змінено на A
  • у гілці feature цей самий рядок змінено на B

Git не може здогадатися, що правильно.


Що відбувається при конфлікті

Коли ти виконуєш:

bash
git merge feature

Git:

  1. зупиняє merge
  2. позначає файли як conflicted
  3. показує повідомлення про конфлікт

Як виглядає конфлікт у файлі

У конфліктному файлі ти побачиш щось на кшталт:

text
<<<<<<< HEAD console.log("Hello from main"); ======= console.log("Hello from feature"); >>>>>>> feature
  • HEAD - поточна гілка
  • нижче ======= - зміни з іншої гілки

Що потрібно зробити

  1. Відкрити файл
  2. Обрати правильний варіант або об'єднати обидва
  3. Видалити конфліктні маркери (<<<<<<<, =======, >>>>>>>)
  4. Зберегти файл
  5. Додати файл до індексу:
bash
git add file.js
  1. Завершити merge:
bash
git commit

Важливо розуміти

  • конфлікт - це не помилка
  • Git спеціально зупиняється, щоб ти не втратив дані
  • без ручного вирішення merge не завершиться

Часте питання на співбесіді

Чи можна уникнути конфліктів?

Повністю - ні. Але можна:

  • частіше підтягувати main
  • робити маленькі коміти
  • не працювати довго в відриві від основної гілки

Коротка відповідь для співбесіди

Конфлікт при merge виникає, коли Git не може автоматично об'єднати зміни з різних гілок, тому що вони зачіпають одні й ті самі частини коду, і вимагає ручного втручання.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.