Що таке конфлікт при merge?
Конфлікт при git merge - це ситуація, коли Git не може автоматично об'єднати зміни, тому що в двох гілках змінені одні й ті самі частини коду.
Кажучи просто: Git не розуміє, яку версію обрати, і просить людину вирішити це вручну.
Коли виникає конфлікт
Конфлікт з'являється, якщо:
- у двох гілках
- були змінені одні й ті самі рядки файлу
- після спільного коміту-предка
Приклад:
- у гілці
mainрядок змінено наA - у гілці
featureцей самий рядок змінено наB
Git не може здогадатися, що правильно.
Що відбувається при конфлікті
Коли ти виконуєш:
bash
git merge featureGit:
- зупиняє merge
- позначає файли як conflicted
- показує повідомлення про конфлікт
Як виглядає конфлікт у файлі
У конфліктному файлі ти побачиш щось на кшталт:
text
<<<<<<< HEAD
console.log("Hello from main");
=======
console.log("Hello from feature");
>>>>>>> featureHEAD- поточна гілка- нижче
=======- зміни з іншої гілки
Що потрібно зробити
- Відкрити файл
- Обрати правильний варіант або об'єднати обидва
- Видалити конфліктні маркери (
<<<<<<<,=======,>>>>>>>) - Зберегти файл
- Додати файл до індексу:
bash
git add file.js- Завершити merge:
bash
git commitВажливо розуміти
- конфлікт - це не помилка
- Git спеціально зупиняється, щоб ти не втратив дані
- без ручного вирішення merge не завершиться
Часте питання на співбесіді
Чи можна уникнути конфліктів?
Повністю - ні. Але можна:
- частіше підтягувати
main - робити маленькі коміти
- не працювати довго в відриві від основної гілки
Коротка відповідь для співбесіди
Конфлікт при merge виникає, коли Git не може автоматично об'єднати зміни з різних гілок, тому що вони зачіпають одні й ті самі частини коду, і вимагає ручного втручання.
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.