Ответ
В Git есть несколько основных подходов к разрешению конфликтов слияния (merge) или перебазирования (rebase):
-
Ручное редактирование файла. Открываешь файл с конфликтами, видишь маркеры:
<<<<<<< HEAD (или название ветки) Ваши локальные изменения ======= Вливаемые изменения из другой ветки >>>>>>> branch-nameВручную редактируешь, оставляя нужный код, удаляешь маркеры и сохраняешь файл.
-
Использование команды
git checkoutдля выбора версии. Можно принять одну из сторон конфликта целиком:# Принять свою версию (ветка, В КОТОРУЮ мержим) git checkout --ours конфликтующий_файл.js # Принять чужую версию (ветку, КОТОРУЮ мержим) git checkout --theirs конфликтующий_файл.jsПосле этого нужно выполнить
git addдля файла. -
Использование инструментов слияния. Команда
git mergetoolзапускает визуальный инструмент (например, Meld, KDiff3, vimdiff), который упрощает сравнение и выбор изменений.
Стандартный процесс после возникновения конфликта:
git merge feature-branch # Возникает конфликт
# ... разрешаешь конфликты любым из способов выше ...
git add . # или конкретные файлы
git commit # создается коммит слияния с разрешением конфликтов
# Или, если это rebase:
git rebase --continue
Важно: При использовании git rebase --skip конфликтующий коммит будет пропущен, что может привести к потере изменений. Эту команду нужно использовать с осторожностью и полным пониманием последствий.