Вопрос
Я сдаюсь!Всякий раз, когда я пытаюсь давить, у меня получается глупый:
! [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 и ИЗВЛЕКАЮ данные из "upstreammaster 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 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'
Мы будем благодарны за любую помощь!Если вам нужны разъяснения, пожалуйста, спрашивайте, я отвечу!
Решение
При выполнении push попытайтесь указать refspec для ведущего устройства верхнего уровня:
git push upstream upstreammaster:master
Другие советы
Джаррет Харди прав.Или сначала объедините ваши изменения обратно в master, а затем попробуйте нажать кнопку.По умолчанию, git push
выталкивает все ветви, имена которых совпадают на удаленном компьютере, и никаких других.Итак, у вас есть два варианта - либо указать это явно, как сказал Джаррет, либо объединить обратно в общую ветку, а затем нажать.
Об этом говорилось в списке рассылки Git, и ясно, что такое поведение не изменится в ближайшее время - многие разработчики полагаются на это поведение в своих рабочих процессах.
Редактирование/Уточнение
Предполагая, что ваш upstreammaster
ветка готова к запуску, тогда вы могли бы сделать это:
Извлекайте любые изменения из восходящего потока.
$ git тянет восходящий мастер
Переключитесь на мою локальную главную ветку
мастер оформления заказа $ git
Объединить изменения в из
upstreammaster
мастер восходящего потока слияния $ git
Продвигайте мои изменения вверх
$ git push вверх по течению
Еще одна вещь, которую вы мочь хотите сделать, прежде чем нажимать, это rebase
внесите изменения в отношении upstream / master, чтобы все ваши коммиты были объединены.Вы можете либо сделать это как отдельный шаг между # 1 и # 2 выше (git rebase upstream/master
) или вы можете сделать это как часть вашего притяжения (git pull --rebase upstream master
)
Во-первых, попытайтесь получить те же ссылки, которые вы пытаетесь использовать.
Если это не работает, вы можете принудительно использовать git push
с помощью git push -f <repo> <refspec>
, но будьте осторожны: этот метод может привести к удалению ссылок в удаленном хранилище.
Первое использование
git pull https://github.com/username/repository master
, а затем попробуйте
git push -u origin master
Является ли ваш репозиторий на " upstream " голое хранилище? Я получил ту же ошибку, но когда я перехожу на голый, они больше не происходят.
Если push-запрос отклонен, попробуйте сначала извлечь его из своей учетной записи github, а затем попробовать push.
Бывший:
В моем случае это выдавало ошибку-
! [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.