Почему «git push» отвергается?(«git pull» не помогает) - PullRequest
13 голосов
/ 18 января 2012

Моя текущая ветвь my_branch. Пытаясь подтолкнуть изменения к удаленному репо, я получаю:

$ git push
Counting objects: 544, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (465/465), done.
Writing objects: 100% (533/533), 2.04 MiB | 1.16 MiB/s, done.
Total 533 (delta 407), reused 0 (delta 0)
To git@......git
   4ed90a6..52673f3  my_branch -> my_branch
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@......git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

Попытка git pull приводит к:

$ git pull
Already up-to-date.

Почему я получаю эту ошибку? Как я мог решить эту проблему и успешно выполнить git push?

Ответы [ 3 ]

26 голосов
/ 18 января 2012

Моя текущая ветка - my_branch.

Это ваша проблема.Когда вы тянете, Git сообщает вам, что ваша ветвь my_branch обновлена, , а не master, что позади origin/master, что делает невозможным ускоренное слияние.

Чтобы подтолкнуть мастера, вам нужно проверить master и потянуть.Это объединит изменения, ожидающие на origin/master, и позволит вам сдвинуть ваши собственные изменения.

git checkout master
git pull
# resolve conflicts, if any
git push
5 голосов
/ 18 января 2012

[Если ваша основная ветвь уже настроена на перебазирование при извлечении, то вам просто нужно выполнить вытягивание по основной ветке, как описано в других ответах, но в противном случае:]

Если вы получаете сообщение без ускоренной пересылки, это означает, что вы можете выдвигать коммиты только поверх существующих коммитов, но вы пытаетесь сделать иначе. Сделайте ребаз на мастере перед нажатием (при условии, что пульт называется источником):

git checkout master
git pull --rebase origin master
git push

См. Также этот вопрос: git rebase и git push: без быстрой перемотки вперед, зачем использовать?

3 голосов
/ 01 августа 2018

изменить разрешение разработчика на "Maintainer"

...