На скрине — классический пример конфликта слияния в Git. Он был бы простым, если бы не одно «но» — конфликтов сразу два.
🧹Я в своей ветке удалил пару импортов на определённой строке. А другой дев, наоборот, эти импорты добавил.
В итоге Git попал в тупик: он не может решить, кто прав, и перекладывает всю ответственность на человека.
💻И так, в верхней части мы видим строки, которые отмечают границы конфликта:
<<<<<<< HEAD — начало блока кода из нашей ветки (HEAD)
======= — разделитель между веток.
>>>>>>> dev/3.1 — начало блока кода из другой ветки dev/3.1
🤩Нужно выбрать, что оставить: из нашей, из dev/3.1 или объединить обе части. Например, можно сохранить все импорты — это всё порешает.
😮💨Иногда нет нужды разбирать их вручную, особенно если вы хотите выбрать изменения только из одной ветки.
Для этого в Git есть способы сделать всё за нас:
✔ Оставить свои правки:
git checkout --ours✔ Оставить чужие:
git checkout --theirs😮💨 На первый взгляд всё просто, но теперь представьте: вы взялись за рефакторинг карточки задачи, где тысяча строк кода.
И в это время два других дева тоже чинят связанные компоненты, изменяя код вместе с нами.
😵 В итоге мы получаем кашу из конфликтов, где не сразу ясно, что оставить, а что убрать, чтобы не сломать ни свою, ни чужую работу.
Если видите большие конфликты — не бойтесь звать напарника с которым конфликтуете.
Вместе искать компромиссы будет веселее. :)
