Git LinuxWindowsmacOS

Git: Git сообщает о конфликте при rebase

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

Во время git rebase Git останавливается на коммите и показывает CONFLICT или «could not apply». Это не повод удалять .git или запускать reset --hard: конфликт означает, что один участок файла изменён в двух версиях истории.

В этой статье
  1. Как выглядит неисправность
  2. Причины и признаки
  3. Пошаговое устранение
  4. Как проверить результат
  5. Если проблема осталась

#Как выглядит неисправность

Во время git rebase Git останавливается на коммите и показывает CONFLICT или «could not apply». Это не повод удалять .git или запускать reset --hard: конфликт означает, что один участок файла изменён в двух версиях истории.

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Одни строки менялись в разных коммитахGit не может автоматически объединить измененияВ файле встречаются <<<<<<<, ======= и >>>>>>>Согласовать итоговый текст файла и продолжить rebase
Изменение имени или удалениеОдин коммит удаляет файл, другой меняетВ git status указано deleted by us/themОпределить, сохранять ли файл, до git add или git rm

#Пошаговое устранение

  1. 1. Выясните, действительно ли идёт rebaseОткройте терминал в корне репозитория (Git Bash, PowerShell или терминал Linux/macOS), введите git status. Должна появиться строка о rebase и список unmerged paths. Если указан merge/cherry-pick — используйте инструкции для соответствующей операции, а не rebase --continue.
  2. Чтение статуса; обычные права пользователя, ничего не меняет
    Linux · Терминал (Bash)Команда
    Чтение статуса; обычные права пользователя, ничего не меняет.
    git status
  1. 2. Зафиксируйте исходное состояниеСкопируйте проблемный файл в каталог вне репозитория через проводник; запишите текущую ветку и коммит через git rev-parse. Если копирование невозможно, не редактируйте содержимое до создания копии.
  2. Только чтение
    Linux · Терминал (Bash)Команда
    Только чтение. Во время rebase имя ветки может отсутствовать, это ожидаемо.
    git branch --show-current
    git rev-parse HEAD
  1. 3. Найдите конфликтные файлыПолучите список путей: git diff --name-only --diff-filter=U. Откройте каждый в редакторе с поддержкой UTF-8 и сопоставьте обе части конфликтного блока; не выбирайте автоматически одну сторону во всех файлах.
  2. Выводит только файлы с неразрешёнными конфликтами
    Linux · Терминал (Bash)Команда
    Выводит только файлы с неразрешёнными конфликтами.
    git diff --name-only --diff-filter=U
  1. 4. Соберите правильный вариантВ редакторе объедините необходимые строки, удалите все маркеры <<<<<<<, =======, >>>>>>> и сохраните файл. Затем запустите тест проекта; при ошибке сравните с копией и вернитесь к правке. В rebase названия ours/theirs могут означать не те стороны, что при обычном merge.
  1. 5. Отметьте разрешение и продолжитеПосле проверки выполните git add с конкретным относительным путём, затем git rebase --continue. При следующем конфликте повторите действия; если открылся редактор сообщения коммита, сохраните его и закройте. Не используйте git add . при наличии посторонних файлов.
  2. Дополнительная команда по теме
    Linux · Терминал (Bash)С осторожностью
    Замените path/to/file реальным путём; add меняет индекс, continue переписывает локальные коммиты.
    git add -- path/to/file
    git rebase --continue

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. 6. Проверьте итог или отмените операциюПри успешном завершении git status сообщает о чистом дереве, а git log -5 --oneline показывает новую последовательность коммитов. Если не удаётся восстановить содержание, сначала сохраните все ценные текущие правки отдельно и только потом рассмотрите git rebase --abort — это возвращает состояние до перебазирования.
  2. Проверка истории; не требует администратора
    Linux · Терминал (Bash)Команда
    Проверка истории; не требует администратора.
    git status
    git log -5 --oneline

#Как проверить результат

Откройте исправленный файл, запустите тесты проекта и убедитесь, что git status больше не сообщает о rebase. Если код работает, но коммиты уже опубликованы коллегами, согласуйте дальнейший push отдельно — простой force может затереть их работу.

#Если проблема осталась

Не повторяйте опасные действия на рабочем окружении. Сравните первоначальный симптом с новым состоянием, сохраните обезличенные сообщения и версии компонентов, проверьте резервную копию; перед изменением общей истории Git или данных/сети Docker обратитесь к ответственному администратору проекта.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.