Updates were rejected because the remote contains work that you do not have locally
GitVersion ControlMergeCommitBitbucketGit Problem Overview
I'm working on a team with a few developers using git on BitBucket. We are all working on a dev
branch, not pushing to master
until a release.
One of the developers committed incorrect code that overwrote my own by accident, and now I am trying to push the correct code back to the repo. I have been reading about this error for a few days now, I can't push to the repo anymore because I am getting the following error:
! [rejected] master -> dev (fetch first)
error: failed to push some refs to 'https://[email protected]/repo_user/repo_name.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.
I follow the instructions and pull
, but then I receive a merge conflict. After entering a message for the merge conflict, my local code is now the incorrect code that the other developer uploaded by accident (as expected from the pull
). So I replace the incorrect code with the backup I copied before committing, and when I try to push again, I get the same error.
It is really frustrating, I really want to help out my team and contribute, but I can't because of this error. Does anyone know how to solve this issue? I would very much appreciate any help.
These are the commands I run in order to commit if it helps anyone out:
git pull remotename master:dev
git add --all
git commit -m "some message"
git pull remotename master:dev
git push remotename master:dev
I would have thought that if I kept this order, I would not receive merge conflicts. I guess I was wrong. Thanks again
Update:
I should add that I have looked for a few hours on Google and StackOverflow, and followed different instructions, but I still can't push
to the dev
branch.
Git Solutions
Solution 1 - Git
You can override any checks that git does by using "force push". Use this command in terminal
> git push -f origin master
However, you will potentially ignore the existing work that is in remote - you are effectively rewriting the remote's history to be exactly like your local copy.
Solution 2 - Git
It happens when we are trying to push to remote repository but has created a new file on remote which has not been pulled yet, let say Readme
. In that case as the error says
> git rejects the update
as we have not taken updated remote in our local environment. So Take pull first from remote
git pull
It will update your local repository and add a new Readme
file.
Then Push updated changes to remote
git push origin master
Solution 3 - Git
git pull <remote> master:dev
will fetch the remote/master
branch and merge it into your local/dev
branch.
git pull <remote> dev
will fetch the remote/dev
branch, and merge it into your current branch.
I think you said the conflicting commit is on remote/dev
, so that is the branch you probably intended to fetch and merge.
In that case, you weren't actually merging the conflict into your local branch, which is sort of weird since you said you saw the incorrect code in your working copy. You might want to check what is going on in remote/master
.
Solution 4 - Git
This usually happens when the repo contains some items that are not there locally. So in order to push our changes, in this case we need to integrate the remote changes and then push.
So create a pull from remote
git pull origin master
Then push changes to that remote
git push origin master
Solution 5 - Git
Force to push
git push -f origin master
Solution 6 - Git
I fixed it, I'm not exactly sure what I did. I tried simply pushing and pulling using:
git pull <remote> dev
instead of
git pull <remote> master:dev
Hope this helps out someone if they are having the same issue.
Solution 7 - Git
You can try this: git pull origin master --rebase
Solution 8 - Git
This is how I solved this issue:
git pull origin master
git push origin master
This usually happens when your remote branch is not updated. And after this if you get an error like "Please enter a commit message" Refer to this ( For me xiaohu Wang answer worked :) )
Solution 9 - Git
You need to input:
$ git pull
$ git fetch
$ git merge
If you use a git push origin master --force
, you will have a big problem.
Solution 10 - Git
> git pull --rebase origin master > > git push origin master
> git push -f origin master
Warning git push -f origin master
- forcefully pushes on existing repository and also delete previous repositories so if you don`t need previous versions than this might be helpful
Solution 11 - Git
Well actually github is much simpler than we think and absolutely it happens whenever we try to push even after we explicitly inserted some files in our git repository so, in order to fix the issue simply try..
: git pull
and then..
: git push
Note: if you accidently stuck in vim editor after pulling your repository than don't worry just close vim editor and try push :)
Solution 12 - Git
I have done below steps. finally it's working fine.
Steps
-
git init
-
git status (for checking status)
-
git add . (add all the change file (.))
-
git commit -m
"<pass your comment>"
-
git remote add origin
"<pass your project clone url>"
-
git pull --allow-unrelated-histories
"<pass your project clone url>"
master -
git push -u
"<pass your project clone url>"
master
Solution 13 - Git
I had this error and it was because there was an update on the server but SourceTree was not showing any updates available (possibly because I was offline when it last checked). So I did a refresh in source tree and now it shows 2 items to push instead of 1 item.
So be sure to press refresh or pull if you get this error and then try again.
Solution 14 - Git
you can use
git pull --rebase <your_reponame> <your_branch>
this will help incase you have some changes not yet registered on your local repo. especially README.md
Solution 15 - Git
The best option for me and it works and simple
git pull --rebase
then
git push
best of luck
Solution 16 - Git
I had the same problem. It happened that I have created .Readme file on the repository without pulling it first.
You may want to delete .Readme file or pull it before pushing.
Solution 17 - Git
The error possibly comes because of the different structure of the code that you are committing and that present on GitHub. You may refer to: How to deal with "refusing to merge unrelated histories" error:
$ git pull --allow-unrelated-histories
$ git push -f origin master
Solution 18 - Git
I had the same problem. Make sure that you are on the right heroku account. It appears when I tried to push the changes to the wrong heroku account
Solution 19 - Git
If you have initialized a new github repo with ReadMe
file and also receiving a fatal error like this:
> fatal: refusing to merge unrelated histories
then you probably want to give a try to the command below:
git pull origin master --allow-unrelated-histories
Now you can try pushing your project to your new repository:
git push origin [branch]
Note: If you have initialized repository in Github and also committed locally, then you need to use the suggested command above, the first command "git pull origin...". Otherwise you can simply type the following command:
git pull origin [branch]
Hope it was helpful.