The developer was commiting small changes to two files. But during this commit, he had a merge conflict which deleted a lot of stuff (probably didn't have the last up to date version). Then it was pushed to the shared repo and some other developers did some other commits.
Now, we noticed, that the merge deleted the important files, and we want to revert it back.
How can I do this without losing the changes from the next commits?
I was trying to git revert commitsha
, but it didn't bring the changes back. Do I need to revert back the mergesha
? How can I determine it?
Usually:
git revert --mainline 1 dd8cbe3e4
Where:
dd8cbe3e4
is the bad merge commit you want to undo, and --mainline
tells you which of the multiple previous commits is the one to restore (remember, a merge commit has multiple parent commits and you can only keep one of them).
1
means, but my guess is that 1,2,3...
corresponds to a list of mappings to the commits immediately before dd8cbe3e4
, sorted by ascending chronological order (oldest first - which is usually what you want to revert to).Source:
http://thezencoder.com/2013/09/05/how-to-correctly-revert-a-bad-merge-in-git/