Ошибка Git push, «Обновления без ускоренной перемотки были отклонены» - PullRequest
96 голосов
/ 01 августа 2011

Я редактировал свои GIT-репозитории через Git Online.После попытки изменения локального кода я получил сообщение об ошибке:

Git push failed, To prevent from losing history, non-fast forward updates were rejected.

Как это исправить?

Ответы [ 11 ]

135 голосов
/ 01 августа 2011

Сначала вытащить изменения:

git pull origin branch_name
83 голосов
/ 16 ноября 2011

Добавьте --force в вашу командную строку, если вы уверены, что хотите нажать. Например. используйте git push origin --force (я рекомендую командную строку, поскольку вы найдете гораздо больше поддержки от других пользователей с командной строкой. Это также может быть невозможно с SmartGit.) Для получения дополнительной информации см. этот сайт: http://help.github.com/remotes/

21 голосов
/ 06 января 2013

Перед нажатием сделайте git pull с опцией rebase. Это позволит получить изменения, которые вы сделали онлайн (в вашем источнике) и применить их локально, а затем добавить свои локальные изменения поверх него.

git pull --rebase

Теперь вы можете нажать на пульт

git push 

Для получения дополнительной информации посмотрите Git rebase объяснил и Глава 3.6 Git Разветвление - Перебазирование .

12 голосов
/ 25 апреля 2012

Я столкнулся с той же ошибкой, просто добавьте "- force" к команде, она работает

git push origin master --force
4 голосов
/ 20 июля 2018

Вы можете добавить - force-with-lease к команде, она будет работать.

git push --force-with-lease

- сила разрушительна, потому что она безусловноперезаписывает удаленный репозиторий тем, что у вас есть локально.Но - принудительно с арендой гарантирует, что вы не перезаписываете работу других.

Подробнее здесь .

4 голосов
/ 22 октября 2013

У меня была такая же проблема.
Причина была в том, что мой местный филиал каким-то образом потерял отслеживание удаленного партнера.

После

git branch branch_name --set-upstream-to=origin/branch_name
git pull

и разрешив конфликты слияния, я смог подтолкнуть.

1 голос
/ 07 августа 2012

(одно) решение для Netbeans 7.1: попробуйте.Это, вероятно, также потерпит неудачу.Теперь загляните в журналы (они обычно отображаются сейчас в IDE).Есть одна или несколько строк, говорящих:

«Из-за этого файла не удалось выполнить извлечение»: *

Найдите этот файл, удалите его (сделайте резервную копию раньше).Обычно это файл .gitignore, поэтому вы не будете удалять код.Повторить толчок.Теперь все должно работать нормально.

0 голосов
/ 24 июля 2018

Иногда, при извлечении из вашего мерзавца, ГОЛОВКА отсоединяется. Вы можете проверить это, введя команду:

git branch 
  • (ГОЛОВКА отсоединена от 8790704)

    1010 * Мастер *

    1012 * разработка *

Лучше перейти в свою ветку и взять новую ветку из соответствующей ветки.

git checkout develop

git pull origin develop

git push origin develop
0 голосов
/ 25 декабря 2017

Обнаружив ту же проблему, для ее решения выполните следующие команды git.

  • git pull {url} --rebase
  • git push --set-upstream {url} master

Сначала вы должны создать хранилище на github.

0 голосов
/ 24 июня 2016

Вот что у меня сработало.Его можно найти в документации git здесь

Если вы находитесь в нужной ветке, вы можете сделать это:

git fetch origin
# Fetches updates made to an online repository
git merge origin YOUR_BRANCH_NAME
# Merges updates made online with your local work
...