Ответ
Основные подходы к разрешению конфликтов:
1. Ручное разрешение (наиболее распространенный метод)
# После возникновения конфликта:
git status # Показывает конфликтующие файлы
# Редактируем файлы, убираем маркеры конфликта:
<<<<<<< HEAD
Ваши изменения
=======
Изменения из ветки feature
>>>>>>> feature
# После редактирования:
git add <файл>
git commit -m "Разрешил конфликт слияния"
2. Использование инструментов слияния
git mergetool # Запускает настроенный инструмент (vimdiff, kdiff3, etc.)
git config --global merge.tool vimdiff # Настройка инструмента
3. Принятие конкретной версии
# Принять свою версию (локальную):
git checkout --ours <файл>
# Принять чужую версию (удаленную):
git checkout --theirs <файл>
4. Отмена слияния
# Для merge:
git merge --abort
# Для rebase:
git rebase --abort
5. Стратегии автоматического разрешения
# Принять нашу версию при любых конфликтах:
git merge -X ours feature
# Принять их версию:
git merge -X theirs feature
6. Перебазирование с интерактивным разрешением
git rebase -i main
# Во время rebase для каждого конфликта:
git add <разрешенный-файл>
git rebase --continue
Практические советы:
- Всегда проверяйте результат
git diffпосле разрешения - Используйте
git log --mergeдля просмотра коммитов, вызвавших конфликт - Для сложных конфликтов используйте
git add -pдля пошагового добавления изменений