E macsAir

Collecting frequent-committer miles

Magit 2.12 released

I am excited to announce the release of Magit version 2.12, consisting of 610 commits since the last feature release six month ago. The release notes can be found here.

It’s Magit! A Git interface inside Emacs

Magit is a text-based Git user interface that puts an unmatched focus on streamlining workflows. Commands are invoked using short mnemonic key sequences that take the cursor’s position in the highly actionable interface into account to provide context-sensitive behavior.

With Magit you can do nearly everything that you can do when using Git on the command-line, but at greater speed and while taking advantage of advanced features that previously seemed too daunting to use on a daily basis. Many users will find that by using Magit they can become more effective Git user.

For more information about Magit, see https://magit.vc and these blog posts.


As mentioned in the latest update I have concentrated on addressing as many “small” issues and feature requests as possible. With halve the year over already I have to concentrate on the big refactorings now. See the release milestones to learn when I intend to implement which features.

Please also see the release notes. They begin with a list of upcoming breaking changes.

I am going to take care of the stickers over the next two weeks.

New in 2.12

New and updated commands

This release adds many new commands: magit-blame-reverse, magit-branch-checkout, magit-branch-or-checkout, magit-branch-pull-request, magit-branch-shelve, magit-branch-unshelve, magit-browse-pull-request, magit-checkout-pull-request, magit-cherry-donate, magit-cherry-harvest, magit-cherry-spinoff, magit-cherry-spinout, magit-commit-reshelve, magit-diff-unmerged, magit-diff-visit-file-other-window, magit-dired-log, magit-merge-absorb, magit-merge-into, magit-merge-squash, magit-next-line, magit-patch-apply-popup, magit-patch-apply, magit-patch-save, magit-previous-line, magit-rebase-remove-commit, magit-remote-prune-refspec, magit-remote-prune, magit-reshelve-since, magit-stash-branch-here, magit-worktree-popup and magit.

Among these I think the following are most noteworthy:

This is probably a good time to remind you that you can view the documentation for a popup action directly from the popup. From a popup, if x would invoke a command, then ? x shows its documentation instead. This also works for arguments; use e.g. ? - x instead of - x. By the way, locating the documentation like this has been improved a lot in this release. Also if you don’t know about C-t yet, then check that out too.

The most important change regarding many existing and new commands probably is the addition of the new magit-dwim-selection option. Disagreements about whether certain commands should act on the thing at point (with or without confirmation) or only use that as the default while letting the user choose something else instead has been a source of frustration for a long time. This new option hopefully puts an end to that. Please see the documentation for more information.

Improvements to core concepts

The documentation regarding completion, confirmation, the selection, and the hunk-internal region was significantly extended. It might be worth reading that even if you have done so before because this release makes some big changes here, including:

Other changes

This release also adds many new options and features, and fixes many bugs. I am particularly happy that the backlog is almost gone now.

The release notes list many changes not mentioned above.

Comments on Reddit.