Magit is designed as an interface to the version control system Git, implemented as an Emacs package. According to the team, while it is not a “complete Git porcelain,” it is complete enough to allow Git users to perform daily version control tasks directly from Emacs. 

“A major advantage Magit has over Git on the command line is that nearly everything you see in a Magit buffer can be acted on. Hiding and showing a section is just on example of that,” the developers of Magit wrote in a post that explains the software.

Magit makes it easy to stage and later commit only some changes, while leaving other changes in the working tree to be committed separately, the team said. After the user presses “s,” the buffer updates automatically and the cursor is moved to the next hunk. 

Users can also stage multiple files or hunks at once. Besides sibling selections, Magit supports a second selection, the “hunk internal region”. You can mark just part of a hunk using the region and then only stage just that part of the hunk.

According to the team, there are some graphical tools that approach Magit when it comes to these staging features, but none quite make it.

“One more thing that sets Magit apart from these tools, however, is that these features are not only available for staging and unstaging, but also when ‘otherwise applying changes,’” the team wrote. 

Users can also discard, reverse, or apply, the file, files, hunk, hunks, or region at point using the exact same interface.