/
Вопросы и ответы
/
Git
/

Ошибка non-fast-forward при git push

Ошибка non-fast-forward при git push

При попытке выполнить команду:

git push

возникает ошибка:

! [rejected] main -> main (non-fast-forward)
error: failed to push some refs to 'github.com:EgoTrippin223/hexlet-git.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g. 'git pull ...') before pushing again.

При этом git status показывает:

On branch main
Your branch and 'origin/main' have diverged, and have 3 and 1 different commits each, respectively.
nothing to commit, working tree clean

Что означает эта ошибка и как правильно запушить свои изменения?

месяц назад

Nikolai Gagarinov

Ответы

1

Ошибка non-fast-forward возникает, когда ваша локальная ветка отстает от удалённой ветки, и прямой пуш невозможен. Причины:

  • В удалённый репозиторий были отправлены новые коммиты после вашего последнего обновления.
  • Ваши локальные изменения находятся в другой истории, поэтому Git не может просто добавить новые коммиты на удалённую ветку.

Способы решения:

  1. Подтянуть изменения с rebase

    git pull --rebase origin main
    git push

Эта команда подтянет изменения с удалённого репозитория и поставит ваши коммиты поверх них. При конфликтах нужно будет их разрешить вручную.

  1. Простой pull с merge

    git pull origin main
    git push

Git объединит изменения через merge, создав дополнительный коммит.

  1. Если не хочется разбираться с rebase/merge

    Можно удалить локальный клон репозитория и клонировать его заново, чтобы начать с актуальной версии удалённой ветки.

Рекомендация: постепенно изучать rebase и merge, чтобы понимать, как Git управляет историей коммитов. Это поможет избежать подобных проблем при совместной работе.

месяц назад

Nikolai Gagarinov