git push отклонен - PullRequest
       13

git push отклонен

50 голосов
/ 06 марта 2009

Я сдаюсь! Всякий раз, когда я пытаюсь толкнуть, я получаю глупость:

! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'

У нашей команды есть новая настройка git. Вместо создания частных веток я теперь создал наш основной репозиторий (на github), чтобы создать свою собственную копию.

В какой-то момент я сделал:

$ git fetch upstream master:upstreammaster

Итак, вот мои текущие настройки ::

$ git branch
master
* upstreammaster

$ git remote -v
origin  git@github.com:userX/projectX.git
upstream    git@github.com:companyX/projectX.git

где userX - мой личный репозиторий.

Так что я иду и делаю некоторые изменения в моей ветке upstreammaster и PULL от "master upstream". Все сливается и прочее:

$ git pull upstream master
remote: Counting objects: 95, done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 60 (delta 54), reused 0 (delta 0)
Unpacking objects: 100% (60/60), done.
From git@github.com:companyX/projectX
 * branch            master     -> FETCH_HEAD
Merge made by recursive.
stuff                      |  165 ++++++++++++--------
stuff                      |   35 ++--
stuff                       |  107 ++++++++++---
stuff                       |  105 ++++++++++---
stuff             |   24 ++--
stuff               |    9 +-
stuff                   |   53 +++----
stuff            |   44 +++---
stuff              |   52 +++----
stuff |   32 +----
stuff          |    4 +-
 stuff             |  138 ++++++++---------
stuff     |   58 ++++----
stuff    |  115 ++++++++------
stuff          |    5 +-
stuff                       |   39 ++---
stuff                        |   28 ++--
 17 files changed, 560 insertions(+), 453 deletions(-)

но потом, когда я пытаюсь сделать:

$ git push upstream master
To git@github.com:companyX/projectX.git
 ! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'

Любая помощь будет с благодарностью! Если вам нужны уточнения, пожалуйста, спросите, я отвечу!

Ответы [ 6 ]

19 голосов
/ 06 марта 2009

При выполнении push, попробуйте указать refspec для ведущего устройства:

git push upstream upstreammaster:master
16 голосов
/ 07 марта 2009

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

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

Редактировать / Разъяснение

Если ваша ветвь upstreammaster готова к отправке, вы можете сделать это:

  1. Извлечь любые изменения из восходящего потока.

    $ git pull upstream master

  2. Переключиться на мою локальную ветку master

    $ git checkout master

  3. Объединить изменения с upstreammaster

    $ git merge upstreammaster

  4. Нажмите мои изменения вверх

    $ git push upstream

Еще одна вещь, которую вы можете захотеть сделать перед тем, как нажать rebase ваши изменения против upstream / master, чтобы все ваши коммиты были вместе. Вы можете сделать это как отдельный шаг между # 1 и # 2 выше (git rebase upstream/master), или вы можете сделать это как часть вашего усилия (git pull --rebase upstream master)

13 голосов
/ 06 марта 2009

Во-первых, попытайтесь получить из того же refspec, что вы пытаетесь нажать.

Если это не работает, вы можете принудительно git push использовать git push -f <repo> <refspec>, но будьте осторожны: этот метод может привести к удалению ссылок в удаленном хранилище.

10 голосов
/ 18 февраля 2014

Первое использование

git pull https://github.com/username/repository master

, а затем попробуйте

git push -u origin master
3 голосов
/ 22 июня 2011

Является ли ваш репозиторий в "апстрим" пустым репозиторием? Я получил ту же ошибку, но когда я перехожу на голый, они больше не происходят.

0 голосов
/ 26 августа 2018

Если push-запрос показывает Отклонено, попробуйте сначала вытащить из вашей учетной записи на github, а затем попробуйте push.

Ex:

В моем случае это выдает ошибку-

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/ashif8984/git-github.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

**** Так что я сделал - ****

$ git pull
$ git push

И код был успешно добавлен в мою учетную запись Github.

...