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://[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 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.
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.