Подтвердить что ты не робот

Git нажмите отклонено

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

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

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

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

$ git fetch upstream master:upstreammaster

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

$ git branch
master
* upstreammaster

$ git remote -v
origin  [email protected]:userX/projectX.git
upstream    [email protected]:companyX/projectX.git

где userX - это мой приватный репозиторий.

Итак, я перехожу и вношу некоторые изменения в свою ветку upstreammaster, а PULL - из "upstream master". Все сливается и прочее:

$ 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 [email protected]: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 [email protected]:companyX/projectX.git
 ! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to '[email protected]:companyX/projectX.git'

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

4b9b3361

Ответ 1

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

git push upstream upstreammaster:master

Ответ 2

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

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

Edit/Разъяснение

Предполагая, что ветвь upstreammaster готова к нажатию, вы можете сделать это:

  • Потяните любые изменения из восходящего потока.

    $Git pull upstream master

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

    $Git мастер проверки

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

    $Git merge upstreammaster

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

    $Git push upstream

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

Ответ 3

Сначала попытайтесь извлечь из того же refspec, к которому вы пытаетесь нажать.

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

Ответ 4

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

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

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

git push -u origin master

Ответ 5

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

Ответ 6

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

Пример:

В моем случае это было error-

 ! [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.

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

$ git pull
$ git push

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

Ответ 7

Если ничего не работает, попробуйте:

git pull --allow-unrelated-histories <repo> <branch>

тогда сделай:

git push --set-upstream origin master