Урок 39 із 65
60%
← Назад

Конфлікти під час злиття гілок

Виникнення та вирішення конфліктів під час об'єднання гілок за допомогою git merge.

Конфлікти під час злиття гілок у Git

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

Після виконання git merge Git повідомить про конфлікт і запропонує вручну виправити файл.

Приклад виникнення конфлікту

git merge test
Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.

Позначки конфлікту

Git додає до файлу спеціальні маркери, які показують обидві версії зміненого коду.

<<<<<<< HEAD
Зміни поточної гілки
=======
Зміни гілки test
>>>>>>> test

Верхня частина містить зміни поточної гілки (HEAD), нижня — зміни гілки, яку ви намагаєтесь об'єднати.

Вирішення конфлікту

Відредагуйте файл вручну: залиште правильний варіант коду та видаліть усі службові позначки Git (<<<<<<<, =======, >>>>>>>).

git add file.txt
git commit -m "Resolve merge conflict"
main
     │
Змінено file.txt
     │
     ├──────────────┐
     │              │
     ▼              ▼
test         Змінено той самий файл
     │              │
     └──── git merge ────►

        CONFLICT

             │
             ▼

Виправити файл вручну

             │
             ▼

git add
git commit
❗ Важливо:

Після виправлення конфлікту потрібно виконати git add та створити коміт. Лише після цього злиття буде завершено.

📌 Завдання:
  1. Створіть дві гілки з однаковим файлом.
  2. Змініть один і той самий рядок у кожній гілці.
  3. Створіть коміт у кожній гілці.
  4. Виконайте git merge та отримайте конфлікт.
  5. Відредагуйте файл, залишивши правильний варіант коду.
  6. Видаліть службові позначки конфлікту.
  7. Виконайте git add та створіть коміт для завершення злиття.
💡 Показати підказку

Не залишайте у файлі рядки <<<<<<<, ======= або >>>>>>>. Вони використовуються лише для позначення конфлікту й повинні бути видалені.

✅ Показати відповідь
Відповідь:

Отримати конфлікт:

git merge test


Відкрити файл та вручну виправити конфлікт.

Після цього:

git add file.txt
git commit -m "Resolve merge conflict"

Після коміту злиття буде успішно завершено.