Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

change a git commit already pushed [duplicate]

Tags:

I accidently overwrote another developper's changes when doing a merge in git. I know how to undo the last commit, that is, my merge.

My problem is that I already pushed those commits into our online repository. So if I roll back, do my merge merge again (with his modifications this time) and try to push it again, there will be a conflict (right?). What is right the way to handle this ?

EDIT To clarify, here is what the situation looks like :

commit A --- commit B --- merge

But in the merge I accidentally discarded the modifications made in commit A. This isn't really a problem. I know how to make the changes locally (undo the merge). But my problem is that the whole thing has been pushed into our shared repository (think github or bitbucket).

like image 789
nha Avatar asked May 23 '14 15:05

nha


1 Answers

By default, remote servers will disallow overwriting already pushed commits. This is because those new commits are different objects which are incompatible to those published before. This means that anyone who has already fetched from the remote since will have major problems fixing it once you overwrite the commit. So you should really reconsider overwriting the commit with something else. Note that git revert works with merge commits too, so you might want to consider that instead.

That being said, you still can push that rewritten commit even if it conflicts with what’s on the server. You can do that by force pushing using git push --force or git push -f in short.

like image 164
poke Avatar answered Sep 20 '22 00:09

poke