问题
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 on 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://myusername@bitbucket.org/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 commiting, 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.
回答1:
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.
回答2:
Use this command in termial
git push -f origin master
回答3:
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
回答4:
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.
回答5:
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 :)
回答6:
Force to push
git push -f origin master
回答7:
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.
回答8:
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.
回答9:
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
回答10:
You can try this: git pull origin master --rebase
回答11:
I had a SSDT VS project first. I wanted to push the project as I had it to Github. I wanted that push to be the initial version of my repo starting the master branch. Donal's suggestion of git push -f origin master was the easiest way (that I saw) to accomplish this. Since I didn't have to worry about re-writing anything, it seemed to make sense.
来源:https://stackoverflow.com/questions/24357108/git-updates-were-rejected-because-the-remote-contains-work-that-you-do-not-have