Сообщение "non-fast-forward" при попытке git push
означает, что локальная ветка, которую вы пытаетесь отправить на удаленный репозиторий, "отстала" от удаленной ветки. Проще говоря, кто-то другой внес изменения в удаленную ветку после того, как вы последний раз ее синхронизировали.
Что это значит более подробно:
Как это исправить (несколько вариантов):
git pull
: Самый безопасный и обычно предпочтительный способ - сначала получить последние изменения с удаленной ветки с помощью команды git pull
. git pull
объединяет удаленную ветку с вашей локальной. Это может создать коммит слияния (merge commit) или, если ваша локальная ветка не имеет собственных изменений, выполнить fast-forward. После git pull
повторите попытку git push
.git push --force
(или git push -f
): Не рекомендуется, особенно при работе в команде. Эта команда перезаписывает удаленную ветку вашей локальной веткой, игнорируя все коммиты, которые были в удаленной ветке. Это может привести к потере чужих изменений, что нежелательно. Используйте *только* если вы абсолютно уверены, что понимаете последствия и знаете, что это единственный правильный способ. Например, после перебазирования (rebase) локальной ветки, и если вы работаете в одиночку в своей ветке, тогда force push может быть оправдан.git pull --rebase
: Эта команда выполняет git pull
, но вместо создания коммита слияния, она перемещает ваши локальные коммиты *поверх* новых коммитов с удаленной ветки. Это создает более чистую историю, но требует более осторожного обращения, так как может потребовать решения конфликтов.Важно: Всегда старайтесь избегать force push, если это возможно. Обсуждайте с командой стратегию ветвления и разрешения конфликтов, чтобы избежать ситуаций, требующих force push.