Resolving Git conflicts with the magic rerere command
Last week I had the chance to attend the Laracon EU conference in Amsterdam. It was an amazing event and I learned a lot . Especially this one talk about advanced Git tricks by Lorna Jane was really great. That was when I first heard about this barely known command.
Rerere stands for "reuse recorded resolution". If this Git feature is turned on, it does two things. First it will record how you deal with conflicts. Secondly, if there is the exact same conflict, Git will resolve it for you. Just like that!
This feature can be activated by setting a git config setting:
git config --global rerere.enabled true
That's it. From now on Git will remember how you resolve conflicts. You can see that it works when you take a closer look at the Git output after a conflict has been resolved.
Recorded resolution for 'index.html'. [master b847e0a] fix conflict
And when Git can use an already recorded solution, it will let you know like this:
Auto-merging index.html CONFLICT (content): Merge conflict in index.html Resolved 'index.html' using previous resolution. Automatic merge failed; fix conflicts and then commit the result.
So now that we know what this feature is about, let's think about where this could be useful. If you are working with a feature branch workflow in Git, you will have to merge branches a lot. As a result you ran into same conflicts again and again. This can get really annoying and this is why the rerere feature comes in very handy here.