Why "git push" is rejected? ("git pull" doesn't help)

Misha Moroshko picture Misha Moroshko · Jan 17, 2012 · Viewed 94.4k times · Source

My current branch is my_branch. Trying to push the changes to the remote repo I get:

$ 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 [email protected]
   4ed90a6..52673f3  my_branch -> my_branch
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]'
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.

Trying to git pull results in:

$ git pull
Already up-to-date.

Why I get this error? How could I resolve this problem and perform git push successfully?

Answer

meagar picture meagar · Jan 17, 2012

My current branch is my_branch.

That is your problem. When you pull, Git is telling you that your branch my_branch is up to date, not master, which is behind origin/master making a fast-forward merge impossible.

In order to push master, you need to check out master and pull. This will merge in the changes waiting on origin/master and allow you to push your own changes.

git checkout master
git pull
# resolve conflicts, if any
git push