Magit
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 |
Magit(/ˈmædʒɪt/MA-jitor/ˈmʌɡɪt/MUH-git[3]) is an interface to theGitversion controlsystem, available as aGNU Emacspackage[4][5]written inEmacs 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]
Like manygraphical user interfaces,Magit provides a visual interface to represent version control actions; however, it uses a keyboard-centric model, and also functions as atext-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 amnemonicaid.[9]
History
[edit]Magit 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 ofcommunity involvement,with 350 individuals[12] having contributed code to thisfree softwareproject 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
[edit]Magit aims to encapsulate the entire functionality of Git,[16]and has interfaces for workflows such as:[17]
- Cloning arepository,and fetching/pulling from it
- Staging, unstaging, and discarding changes in the worktree
- Creatingcommitsand pushing them to a remote
- Creatingbranches,and eithermergingorrebasingonto them
- Magit makes use of Emacs' Ediff to provide 3-way-merge functionality
- Browsing andbisectingthe commit history
- Creating and applyingpatches
- Adding notes andtagsto commits
Forges
[edit]Magit's Forge provides integration with a number offorges,[18]namelyGitHubandGitLab.[19]
Partial support is also listed for:Gitea,Gogs,Bitbucket,Gitweb, Cgit, StGit and SourceHut.
Forgecurrently 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
[edit]Magit 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 frameworksSpacemacsand Doom Emacs.[24][25]
There has been interest in including Magit as a built-in feature package in Emacs, but there are issues with obtainingFSFcopyright assignment from all contributors to the project.[26]
As of February 2023, Magit is the most starred Emacs package on GitHub.[27]
See also
[edit]Notes
[edit]References
[edit]- ^Bernoulli, Jonas (2024-08-09)."Emacsair! Magit 4.0 released".emacsair.me.Retrieved2024-09-15.
- ^"magit/docs/RelNotes/4.0.0.org at main · magit/magit".GitHub.Retrieved2024-09-15.
- ^"How to pronounce Magit? (Magit User Manual)".magit.vc.Retrieved2024-09-15.
- ^ Corbet, Jonathan (July 12, 2017)."Emacs and Magit".LWN.net.
- ^ "EmacsWiki: Magit".Retrieved2020-09-17.
- ^"magit".Milkypostman's Emacs Lisp Package Archive.Retrieved2020-09-20.
- ^"Current List of Packages".Milkypostman's Emacs Lisp Package Archive.Retrieved2024-09-15.
- ^"Transient commands".GitHub.Retrieved2020-09-17.
- ^ Bernoulli, Jonas (2017-09-01)."Magit, the magical Git interface".EmacsAir.
- ^"magit/magit.el".GitHub.Retrieved2020-09-17.
- ^"Magit 1.4.0 Release Notes".GitHub.2015-07-01.Retrieved2020-09-20.
- ^ "GitStats - magit".magit.vc.Retrieved2022-03-08.
- ^"It's Magit! The magical Git client".Kickstarter.
- ^ "Discover » Technology / Software » Most Funded — Kickstarter".Retrieved2020-09-17.
- ^"Please help making it better".
- ^Bernoulli, Jonas."It's Magit! A Git Porcelain inside Emacs".magit.vc.Retrieved2022-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.Retrieved2020-09-19.
- ^ "Doom Emacs - default modules file".GitHub.Retrieved2020-09-19.
- ^Stallman, Richard(5 July 2017)."Re: In support of Jonas Bernoulli's Magit".emacs-devel(Mailing list).Retrieved2020-09-19.
- ^"GitHub Search for" stars:>1000 ", Emacs lisp, sorted by most stars".GitHub.Retrieved2020-09-19.