Nowadays it is basically impossible to land in a group of Emacs enthusiasts without someone talking rapturously about the wonders of Magit. If you listen closely, the words resemble a chant: “You wish you could do it with Git, until you experience the great Magit.”

Be warned: the following story goes along those magic lines.

Magit makes me look back at my experiences with CVS, SVN and Mercurial and laugh about my clumsiness with tools like Tortoise. Before Magit, I touched the regular Git command-line interface for simple tasks such as cloning a repository, always scared away by the large number of options at my disposal. I had to deal with Eclipse’s own Git client when I was working with Java, but please let me spare you the gruesome details.

Magit has never been so necessary and useful as it has been since I started my new job back in April. Git is our only version-control sytem, and the command-line is still the preferred tool in the office. Not for me, though. Magit has become a natural extension of pretty much all of my coding.

I regularly create branches, being it for an issue to fix or a new feature to implement. If the project is based on gitflow, we are covered in Magit thanks to magit-gitflow. Otherwise, rebasing and merging on master are just a few key bindings away.

Although impressive, it is not only a matter of speed. Magit taught me more about Git than every tutorial out in the wild. Especially when it comes to rebasing and cherry-picking, both of which are hard to get wrong now. Rewording a commit, exploring the repository history, dealing with submodules: it all makes sense through an interface that could not be more helpful.

The one thing against Magit I have for the haters is this:

(unbind-key "C-c C-w" git-commit-mode-map)

That binding is my prefix for Eyebrowse.1 Not much of a complaint, I know.

Magit brings order, balance and elegance to the powers of Git. It is the only version-control system I need.