I’ve read a few explanations for a broken git push, but none of them seem to cover this case.
I’m unable to push my local changes to a remote repository, even after a pull and with no conflicts.
$ git pull
Already up-to-date
$ git st
# On branch unstable
nothing to commit (working directory clean)
$ git push
To ssh://<url>
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://<url>'
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.
<url> is, of course, the real URL of my repository.
There are no changes to pull, no conflicts, and I’m not sure what else could cause this to fail.
I believe I’ve got everything set up correctly:
$ git remote -v
origin ssh://<url> (fetch)
origin ssh://<url> (push)
$ git branch -v
master 175a09d [behind 18] openReview must now be called from thread other than main.
* unstable c9e5cab Progress on attachments.
In the past, I’ve just deleted my local repository. However, this is happening more frequently.
- What caused this to happen?
- How can I avoid it in the future?
- How am I supposed to fix this?
Full disclosure – my git is a little rusty so this may not be 100% correct.
It appears that your local ‘master’ branch is behind the ‘origin’ master branch. When you run ‘git push’ it will attempt to update all the remote branches with your corresponding local branches. To just push your current branch, try
git push origin unstable. Also, if you want your local master branch to get up-to-date, checkout the master branch and rungit pull.