Magit (/ˈmædʒɪt/ MA-jit or /ˈmʌɡɪt/ MUH-git[3]) is an interface to the Git version control system, available as a GNU Emacs package[4][5] written in Emacs Lisp. It is available through the MELPA package repository,[6] on which it is the most-downloaded non-library package, with over 4.3 million downloads as of September 2024.[7]
Original author(s) | Marius Vollmer |
---|---|
Developer(s) | Jonas Bernoulli, Kyle Meyer, and Noam Postavsky |
Stable release | |
Repository | github |
Written in | Emacs Lisp |
Type |
|
License | GPL-3.0-or-later |
Website | magit |
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[8] — serving as a mnemonic aid.[9]
History
editMagit was created by Marius Vollmer in 2008,[10] with Jonas Bernoulli assuming the role of maintainer in 2013.[11] Since its release, Magit has seen a high degree of community involvement, with 350 individuals[12] having contributed code to this free software project as of September 2020.
In 2018 Magit underwent a Kickstarter funding campaign[13] 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.[14] 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.[15]
Functionality
editMagit aims to encapsulate the entire functionality of Git,[16] and has interfaces for workflows such as:[17]
- 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
editMagit's Forge provides integration with a number of forges,[18] namely GitHub and GitLab.[19]
Partial support is also listed for: Gitea, Gogs, Bitbucket, Gitweb, Cgit, StGit and SourceHut.
Forge currently allows for[20]
- 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
editMagit is favourably covered in a number of blog posts and tutorials and a talk delivered by former Emacs' maintainer John Wiegley.[21][22][23]
Magit is included by default in the Emacs configuration frameworks Spacemacs and Doom Emacs.[24][25]
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.[26]
As of February 2023, Magit is the most starred Emacs package on GitHub.[27]
See also
editNotes
editReferences
edit- ^ Bernoulli, Jonas (2024-08-09). "Emacsair! Magit 4.0 released". emacsair.me. Retrieved 2024-09-15.
- ^ "magit/docs/RelNotes/4.0.0.org at main · magit/magit". GitHub. Retrieved 2024-09-15.
- ^ "How to pronounce Magit? (Magit User Manual)". magit.vc. Retrieved 2024-09-15.
- ^ Corbet, Jonathan (July 12, 2017). "Emacs and Magit". LWN.net.
- ^ "EmacsWiki: Magit". Retrieved 2020-09-17.
- ^ "magit". Milkypostman's Emacs Lisp Package Archive. Retrieved 2020-09-20.
- ^ "Current List of Packages". Milkypostman's Emacs Lisp Package Archive. Retrieved 2024-09-15.
- ^ "Transient commands". GitHub. Retrieved 2020-09-17.
- ^ Bernoulli, Jonas (2017-09-01). "Magit, the magical Git interface". EmacsAir.
- ^ "magit/magit.el". GitHub. Retrieved 2020-09-17.
- ^ "Magit 1.4.0 Release Notes". GitHub. 2015-07-01. Retrieved 2020-09-20.
- ^ "GitStats - magit". magit.vc. Retrieved 2022-03-08.
- ^ "It's Magit! The magical Git client". Kickstarter.
- ^ "Discover » Technology / Software » Most Funded — Kickstarter". Retrieved 2020-09-17.
- ^ "Please help making it better".
- ^ Bernoulli, Jonas. "It's Magit! A Git Porcelain inside Emacs". magit.vc. Retrieved 2022-01-02.
- ^ "Top (Magit User Manual)". magit.vc.
- ^ Heartman, Thomas (16 March 2020). "Improve your workflow with Forge".
- ^ "Forge User and Developer Manual". magit.vc.
- ^ "Usage (Forge User and Developer Manual)". magit.vc.
- ^ Patil, Sachin. "How to use Magit to manage Git projects". opensource.com.
- ^ Bachmann, Gunther. "Magit – A textual git interface". itemis.
- ^ Wiegley, John. "It's Magit!". YouTube.
- ^ "Spacemacs - source control layer". GitHub. Retrieved 2020-09-19.
- ^ "Doom Emacs - default modules file". GitHub. Retrieved 2020-09-19.
- ^ Stallman, Richard (5 July 2017). "Re: In support of Jonas Bernoulli's Magit". emacs-devel (Mailing list). Retrieved 2020-09-19.
- ^ "GitHub Search for "stars:>1000", Emacs lisp, sorted by most stars". GitHub. Retrieved 2020-09-19.