Magit
Emacs interface for the Git version control system
From Wikipedia, the free encyclopedia
Magit (/ˈmædʒɪt/ MA-jit or /ˈmʌɡɪt/ MUH-git[2]) is a Git version control interface for GNU Emacs.[3] It is written in Emacs Lisp and distributed through the MELPA package repository,[4] where it is the most-downloaded non-library package, with over 4.3 million downloads as of September 2024.[5]
| Magit | |
|---|---|
| Original author | Marius Vollmer |
| Developers | Jonas Bernoulli, Kyle Meyer, and Noam Postavsky |
| Stable release | |
| Written in | Emacs Lisp |
| Type |
|
| License | GPL-3.0-or-later |
| Website | magit |
| Repository | github |
Like many graphical user interfaces, Magit provides a visual interface to represent version control actions; however, it uses a keyboard-centric model, and also functions as a text-based user interface.[a] The issue of key-memorization is mitigated through use of a popup menu which displays the actions available to the user[6] — serving as a mnemonic aid.[7]
History
Magit was created by Marius Vollmer in 2008,[8] with Jonas Bernoulli assuming the role of maintainer in 2013.[9] Since its release, Magit has seen a high degree of community involvement, with 350 individuals[10] having contributed code to this free software project as of September 2020.
In 2018 Magit underwent a Kickstarter funding campaign[11] which aimed to fund the maintainer for a year of work. The fundraising was successful and resulted in the project being the 27th most funded software project on Kickstarter.[12] Since the Kickstarter funded period expired donations are encouraged to support the authors development via direct payments, GitHub's sponsorship program and various other crowdfunding services.[13]
Functionality

Magit aims to encapsulate the entire functionality of Git,[14] and has interfaces for workflows such as:[15]
- Cloning a repository, and fetching/pulling from it
- Staging, unstaging, and discarding changes in the worktree
- Creating commits and pushing them to a remote
- Creating branches, and either merging or rebasing onto them
- Magit makes use of Emacs' Ediff to provide 3-way-merge functionality
- Browsing and bisecting the commit history
- Creating and applying patches
- Adding notes and tags to commits
Forges
Magit's Forge provides integration with a number of forges,[16] namely GitHub and GitLab.[17]
Partial support is also listed for: Gitea, Gogs, Bitbucket, Gitweb, Cgit, StGit and SourceHut.
Forge currently allows for[18]
- Fetching topics and notifications
- Listing topics, issues, pull-requests, notifications, and repositories
- Creating issues, pull-requests (PRs), PR from an issue, PR reviews, and forks
Reception
Magit is favourably covered in a number of blog posts and tutorials and a talk delivered by former Emacs' maintainer John Wiegley.[19][20][21] It is considered by some to be a "killer app" for Emacs.[22]
Magit is included by default in the Emacs configuration frameworks Spacemacs and Doom Emacs.[23][24]
There has been interest in including Magit as a built-in feature package in Emacs, but there are issues with obtaining FSF copyright assignment from all contributors to the project.[25]