Magit is an interface to the
Git
Git () is a distributed version control system: tracking changes in any set of files, usually used for coordinating work among programmers collaboratively developing source code during software development. Its goals include speed, data integ ...
version control
In software engineering, version control (also known as revision control, source control, or source code management) is a class of systems responsible for managing changes to computer programs, documents, large web sites, or other collections o ...
system
(a Git Client),
implemented as a
GNU Emacs
GNU Emacs is a free software text editor. It was created by GNU Project founder Richard Stallman, based on the Emacs editor developed for Unix operating systems. GNU Emacs has been a central component of the GNU project and a flagship proje ...
package
written in
Elisp.
It is made available through the MELPA package repository,
on which it is the most-downloaded non-library package, with almost three million downloads as of July 2021.
Like many
graphical user interface
The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows User (computing), users to Human–computer interaction, interact with electronic devices through graphical icon (comp ...
s, 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
In computing, text-based user interfaces (TUI) (alternately terminal user interfaces, to reflect a dependence upon the properties of computer terminals and not just text), is a retronym describing a type of user interface (UI) common as an ear ...
.
The issue of key-memorization is mitigated through use of a popup menu which displays the actions available to the user — serving as a
mnemonic
A mnemonic ( ) device, or memory device, is any learning technique that aids information retention or retrieval (remembering) in the human memory for better understanding.
Mnemonics make use of elaborative encoding, retrieval cues, and image ...
aid.
History
Magit was created by Marius Vollmer in 2008,
with Jonas Bernoulli assuming the role of maintainer in 2013.
Since its release, Magit has seen a high degree of
community involvement
A community is a social unit (a group of living things) with commonality such as place, norms, religion, values, customs, or identity. Communities may share a sense of place situated in a given geographical area (e.g. a country, village ...
, with 350 individuals
having contributed code to this
free software
Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, ...
project as of September 2020.
In 2018 Magit underwent a Kickstarter funding campaign 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. Since the Kickstarter funded period expired donations are encouraged to support the authors development via direct payments,
GitHub
GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, co ...
's sponsorship program and various other crowdfunding services.
Functionality
Magit aims to encapsulate the entire functionality of Git.
As such, Magit includes interfaces for
* Cloning a
repository
Repository may refer to:
Archives and online databases
* Content repository, a database with an associated set of data management tools, allowing application-independent access to the content
* Disciplinary repository (or subject repository), a ...
, and fetching/pulling from it
* Staging, unstaging, and discarding changes in the worktree
* Creating
commits and pushing them to a remote
* Creating
branches
A branch, sometimes called a ramus in botany, is a woody structural member connected to the central trunk of a tree (or sometimes a shrub). Large branches are known as boughs and small branches are known as twigs. The term ''twig'' usually ...
, and either
merging
Merge, merging, or merger may refer to:
Concepts
* Merge (traffic), the reduction of the number of lanes on a road
* Merge (linguistics), a basic syntactic operation in generative syntax in the Minimalist Program
* Merger (politics), the co ...
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,
namely
GitHub
GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, co ...
and
GitLab
GitLab Inc. is an open-core company that operates GitLab, a DevOps software package which can develop, secure, and operate software. The open source software project was created by Ukrainian developer Dmitriy Zaporozhets and Dutch developer ...
.
Partial support is also listed for:
Gitea, Gogs,
Bitbucket
Bitbucket is a Git-based source code repository hosting service owned by Atlassian. Bitbucket offers both commercial plans and free accounts with an unlimited number of private repositories.
Services Bitbucket Cloud
Bitbucket Cloud (previo ...
, Gitweb, Cgit, StGit and SourceHut.
Forge currently allows for
* 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
There has been interest in including Magit in Emacs, but there are issues with obtaining
FSF copyright assignment from all contributors to the project.
Magit is favourably covered in a number of blog posts and tutorials
and a talk delivered by former Emacs' maintainer John Wiegley
Magit is included by default in the Emacs configuration frameworks
Spacemacs and Doom Emacs
As of September 2022, Magit is the most starred Emacs package on GitHub.
See also
*
Emacs
Emacs , originally named EMACS (an acronym for "Editor MACroS"), is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, ...
Notes
References
External links
*
{{EmacsNavbox
Emacs
Git (software)