Magit
What it is
Magit is a free, text-based Git interface implemented as an Emacs package. It handles many everyday version-control tasks, including logging, cloning, pushing, merging, rebasing, cherry-picking, reverting, and blaming, though its manual says it does not yet wrap every Git command. Its status buffer shows the current branch, unpulled and unpushed changes, and staged and unstaged work. Users can stage or unstage whole files, hunks, or selected parts of a hunk, and create or edit commits with amend, squash, and fixup workflows. Magit runs Git commands and can show the commands it invokes; it refreshes buffers after operations that may change repository state. The companion Forge package retrieves issues, pull requests, and other data through GitHub and GitLab APIs, but cannot provide GitLab notifications because that API does not expose them. Magit is available for Linux, macOS, and Windows through MELPA and MELPA Stable. Its manual says full use requires basic Emacs skills and prior experience with both Git and Emacs.
For and against
For
- Shows branch and staged and unstaged changes in a status buffer.
- Stage or unstage files, hunks, or selected hunk parts.
- Supports amend, squash, and fixup commit workflows.
- Available for Linux, macOS, and Windows.
Against
- Does not yet wrap every Git command.
- Refreshing from scratch can be slow in large repositories.
- Forge cannot provide GitLab notifications.
The verdict
Magit brings a broad set of Git operations into Emacs and exposes repository state in an actionable status buffer. Its scope and learning requirements make prior experience with both Emacs and Git important.
Who it suits
Magit suits people who already work in Emacs and want to handle Git tasks within it. The manual recommends basic Emacs skills and some prior experience with Git and Emacs.
Plans and prices
Magit
Emacs package · installed through Emacs’ package manager or from its development repository
Read 9 Oct 2026 · docs.magit.vc
On the record
- Commit support
- Magit supports creating and editing commits, including amend, squash, and fixup workflows.docs.magit.vc · read 8 Oct 2026
- Forge integration
- The companion Forge package works with GitHub and GitLab from Magit and Emacs, fetching issues and pull requests through the forge API.docs.magit.vc · read 9 Oct 2026
- Forge integrations
- The companion Forge package works with GitHub and GitLab to fetch issues, pull requests, and other data through their APIs.docs.magit.vc · read 8 Oct 2026
- Forge support limits
- Forge documents two supported forges, three partially supported forges, and four semi-forges; partial support covers functionality that does not require the API.docs.magit.vc · read 9 Oct 2026
- Git operations
- Documented operations include logging, cloning, pushing, merging, rebasing, cherry-picking, reverting, and blaming.docs.magit.vc · read 9 Oct 2026
- Installation
- Magit is available through the MELPA and MELPA Stable package archives.docs.magit.vc · read 8 Oct 2026
- Integration limitation
- Forge cannot provide GitLab notifications because the GitLab API does not expose them.docs.magit.vc · read 8 Oct 2026
- License
- The Magit manual is distributed under the GNU General Public License version 3 or later.docs.magit.vc · read 9 Oct 2026
- Live status
- The status buffer shows repository information including the current branch, unpulled and unpushed changes, and staged and unstaged changes.docs.magit.vc · read 9 Oct 2026
- Performance
- The manual notes that refreshing buffers from scratch can be slow in large repositories.docs.magit.vc · read 9 Oct 2026
- Product
- Magit is a Git interface implemented as an Emacs package.docs.magit.vc · read 9 Oct 2026
- Purpose
- Magit is a complete text-based interface to Git implemented as an Emacs package.docs.magit.vc · read 8 Oct 2026
- Refresh
- Magit refreshes its current buffer and the repository status buffer after commands that may change repository state.docs.magit.vc · read 9 Oct 2026
- Requirements
- The manual says users need basic Emacs skills and some prior experience with both Git and Emacs to make full use of Magit.docs.magit.vc · read 9 Oct 2026
- Safety
- Potentially destructive commands often require confirmation, and optional work-in-progress modes can save tracked files to recovery references.docs.magit.vc · read 9 Oct 2026
- Scope
- It supports most daily Git version control tasks within Emacs, while its manual says it does not yet wrap every Git command.docs.magit.vc · read 9 Oct 2026
- Staging
- Users can stage or unstage files, hunks, or part of a hunk from the status buffer.docs.magit.vc · read 9 Oct 2026
- Status view
- Magit presents actionable Git information in status buffers and refreshes the output when it becomes outdated.magit.vc · read 8 Oct 2026