karysto karysto - 3 months ago 23
Git Question

git: updates were rejected because the remote contains work that you do not have locally

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.

Answer

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.