Ответ 1
При выполнении нажатия попробуйте указать refspec для ведущего мастера:
git push upstream upstreammaster:master
Я сдаюсь! Всякий раз, когда я пытаюсь нажать, я получаю глупость:
! [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'
Любая помощь будет очень признательна! Если вам нужно уточнение, спросите, я отвечу!
При выполнении нажатия попробуйте указать refspec для ведущего мастера:
git push upstream upstreammaster:master
Яррет Харди прав. Или сначала слейте свои изменения обратно в мастер, а затем попробуйте нажать. По умолчанию 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
)
Сначала попытайтесь извлечь из того же refspec, к которому вы пытаетесь нажать.
Если это не сработает, вы можете заставить git push
использовать git push -f <repo> <refspec>
, но будьте осторожны: этот метод может привести к удалению ссылок в удаленном репозитории.
Первое использование
git pull https://github.com/username/repository master
а затем попробуйте
git push -u origin master
Является ли ваш репозиторий "вверх по течению" открытым хранилищем? У меня такая же ошибка, но когда я перехожу на голый, они больше не происходят.
Если 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.
Если ничего не работает, попробуйте:
git pull --allow-unrelated-histories <repo> <branch>
тогда сделай:
git push --set-upstream origin master