Что означает «отклонения не-быстрой пересылки Git push»? - PullRequest
138 голосов
/ 13 января 2011

Я использую Git для управления моими двумя компьютерами и моей разработкой. Я пытаюсь внести изменения в GitHub и получаю сообщение об ошибке.

Не удалось выдвинуть некоторые ссылки на <repo>. Чтобы предотвратить потерю истории, обновления без ускоренной пересылки были отклонены. Слияние удаленных изменений перед повторным нажатием.

Что может быть причиной этого и как я могу это исправить?

РЕДАКТИРОВАТЬ:

Вытягивание репо возвращает следующее:

* филиал мастер-> мастер (без ускоренной перемотки вперед) Уже-уточненный

Нажатие по-прежнему дает мне вышеупомянутую ошибку.

Ответы [ 6 ]

124 голосов
/ 13 января 2011

GitHub имеет приятный раздел под названием " Работа с ошибками" не-быстрой перемотки вперед ""

Поначалу эта ошибка может быть слишком сильной, не бойтесь.
Проще говоря, git не может сделать изменения на пульте без потери коммитов, поэтому он отклоняет push .
Обычно это вызвано тем, что другой пользователь нажимает на ту же ветку.Вы можете исправить это, извлекая и объединяя удаленную ветвь, или используя pull для одновременного выполнения обоих действий.

В других случаях эта ошибка является результатом деструктивных изменений, внесенных локально, с помощью таких команд, как git commit --amend или git rebase.
Хотя вы можете переопределить пульт, добавив --force к команде push, делать это следует только в том случае, если вы абсолютно уверены, что это именно то, что вы хотите сделать.
Принудительные нажатия могут вызывать проблемыдля других пользователей, которые загрузили удаленную ветку, и считается плохой практикой. Если есть сомнения, не нажимайте принудительно .


Git не может вносить изменения на пульте, как слияние с ускоренной перемоткой вперед, которое Visual GitСсылка иллюстрирует как:

alt text

Это не точно ваш случай, но помогает увидеть, что такое "ускоренная перемотка вперед" (где HEAD ветви просто перемещаются в новый более поздний коммит).


"branch master->master (non-fast-forward) Already-up-to-date" обычно используется для локальных ветвей, которые не отслеживают свой удаленный счетчик-part.
См., например, этот вопрос SO " git pull говорит, что он актуален, но git push отклоняет не ускоренную перемотку вперед ".
Или две ветви связаны, но в разногласиис соответствующей историей:
См. " Бесконечная история GIT - что я здесь не так делаю? "

Это означает, что ваша ветка subversion и ваш удаленный мастер gitветви не согласны с чем-либо.
Некоторое изменение было отправлено / зафиксировано для одного, которого нет в другом.2 *, и это должно дать вам ключ к пониманию того, что пошло не так - ищите «вилки» в истории.

51 голосов
/ 13 января 2011

Это означает, что в удаленный репозиторий были отправлены другие коммиты, которые отличаются от ваших коммитов.Обычно вы можете решить эту проблему с помощью

git pull

, прежде чем нажать

. В конечном счете, «ускоренная перемотка вперед» означает, что фиксация может быть применена непосредственно поверх рабочего дерева без необходимости объединения.

11 голосов
/ 13 января 2011

Ускоренное обновление - это то, когда единственные изменения, с одной стороны, происходят после самого последнего коммита на другой стороне, поэтому слияния не требуется.Это говорит о том, что вам нужно объединить свои изменения, прежде чем вы сможете нажать.

3 голосов
/ 26 февраля 2018

в этом случае вы можете захотеть применить силу с принудительной операцией

git push origin master --force

0 голосов
/ 05 октября 2018

Никогда не делайте git -f для выполнения push, поскольку это может привести к последующим катастрофическим последствиям.

Вам просто нужно сделать git pull вашей локальной ветки.

Пример: - источник git pull 'your_local_branch'

, а затем сделать толчок git

0 голосов
/ 13 сентября 2018

Вам необходимо объединить и разрешить conflicts locally, прежде чем вы внесете изменения в удаленное репо / форк.

1) pull (выборка и объединение)

$ git pull remote branch 

2) Push-изменения

$ git push remote branch 

Тем не менее, вы можете быстро выбрать push принудительно с--force, но его следует избегать, так как это может привести к потере изменений или негативно повлиять на других участников.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...