ELPA Logo NonGNU-devel ELPA: magit

magit Atom Feed

Description
A Git porcelain inside Emacs
Latest
magit-4.7.2.0.20261110.3.tar (.sig), 2026-Nov-11, 2.02 MiB
Maintainer
Jonas Bernoulli <emacs.magit@jonas.bernoulli.dev>
Kyle Meyer <kyle@kyleam.com>
Other versions:
release version
Website
https://github.com/magit/magit
ELPA's Repository
CGit or Gitweb
All Dependencies
compat (.tar)
cond-let (.tar)
llama (.tar)
magit-section (.tar)
seq (.tar)
transient (.tar)
with-editor (.tar)
Manual
magit

To install this package from Emacs, use package-install or list-packages.

Full description

A Git Porcelain inside Emacs

homepage | manual | faq | wiki | mastodon


Magit is an interface to the version control system Git, implemented as an Emacs package. Magit aspires to be a complete Git porcelain. While we cannot (yet) claim that Magit wraps and improves upon each and every Git command, it is complete enough to allow even experienced Git users to perform almost all of their daily version control tasks directly from within Emacs. While many fine Git clients exist, only Magit and Git itself deserve to be called porcelains.


Keeping its users this excited is a lot of work. If Magit makes you
more productive too, then please consider making a donation.
Thank you! — Jonas Bernoulli

Sponsor my work using Github Sponsors    Sponsor my work using Liberapay
Sponsor my work using Opencollective    Sponsor my work using PayPal

Some alternative donation methods are available.

1. Getting Started

If you are new to Magit, then either one of the following two articles should help understanding how it differs from other Git clients.

1.1. Visual Magit walk-through

If you are completely new to Magit, then this article is a good visual introduction.

Almost everything that you see in Magit can be acted on by pressing some key, but that's not obvious from just seeing how Magit looks. The screenshots and accompanying text of this article explain how to perform a variety of actions on Magit's output.

1.2. Magit, the magical Git interface

Magit differs significantly from other Git interfaces, and its advantages are not immediately obvious simply from looking at a few screenshots as presented in the preceding article.

This article discusses Magit's properties in somewhat more abstract terms.

1.3. Video introductions

If you prefer video introductions, head over to that page, where find a collection of such introductions and other videos about Magit, by various creators.


2. Support and Contributing

Magit has many users and very few maintainers, so we kindly ask to read the appropriate guidelines before getting in contact. — Thanks!

Please use your own words. No stochastic parrots.

We use discussions (not issues) for feature requests. Please consider asking other users for help, where ever you like to hang out with other Emacs users. not every question can only be answered by the maintainer.

Please consider supporting the maintainer, who makes a living maintaining this and other packages, with a donation. — Thanks!


3. Acknowledgments

Magit was started by Marius Vollmer, and is now maintained by Jonas Bernoulli and Kyle Meyer. Former maintainers are Nicolas Dudebout, Noam Postavsky, Peter J. Weisberg, Phil Jackson, Rémi Vanicat and Yann Hodique. Many more people have contributed code, suggested features or made monetary contributions.


Packaging status
MELPA Snapshots MELPA Releases NonGNU ELPA
Compile Test Manual
human made

Old versions

magit-4.7.2.0.20261109.2.tar.lz2026-Nov-09 343 KiB
magit-4.7.2.0.20261107.0.tar.lz2026-Nov-08 343 KiB
magit-4.7.1.0.20261103.76.tar.lz2026-Nov-06 343 KiB
magit-4.7.1.0.20261101.74.tar.lz2026-Nov-01 343 KiB
magit-4.7.1.0.20261030.73.tar.lz2026-Nov-01 343 KiB
magit-4.7.0.0.20260831.21.tar.lz2026-Aug-31 340 KiB
magit-4.6.0.0.20260731.82.tar.lz2026-Jul-31 340 KiB
magit-4.0.0.0.20240830.211722.tar.lz2024-Aug-31 282 KiB
magit-3.3.0.50snapshot0.20240808.120842.tar.lz2024-Aug-08 299 KiB
magit-3.2.1.0.20211001.214957.tar.lz2021-Oct-02 285 KiB

News

# -*- mode: org -*-
* v4.7.2    2026-11-07

- Tags are now shown in the logs of submodules in the status buffer
  of the super-repository.  Additionally all unpulled tags are shown
  in the headings of these logs.  1c470b54, 5f6c5afa

- When setting the value of a Git variable in a menu, the worktree
  specific value can be set or unset using a prefix argument.  See
  https://github.com/magit/forge/discussions/831.  This is still
  experimental.  2e92cad8

- In the log menu, the ~--authors~ argument now accepts multiple values.
  7851e024

- Improved the default choice when pushing to the upstream, if that
  isn't configured yet.  #5638

- Hi-lock is now instructed to use overlays in Magit buffers so that
  its highlights are not lost when refreshing such buffers.

- Improved the timestamp fallbacks displayed in repository lists for
  repositories that lack release tags.  58a46982

- When committing ~dabbrev-capf~ is now added near the end of
  ~completion-at-point-functions~ to avoid shadowing other functions.
  #5655

- Optimized diff washing by preventing modification hooks from
  triggering and avoiding unnecessary buffer edits.  #5656, #5659

- Added new hook ~magit-post-call-git-functions~.  #5652

- Hunk fontification and refinement are now disabled when
  ~long-lines-threshold~ triggers.  #5647

- ~magit-list-repositories~ can now be instructed (using option
  ~magit-repository-directories~) to include repositories nested inside
  other repositories.  #5657

- ~magit-list-repositories~ can now list different sets of repositories
  depending on ~default-directory~, by setting ~magit-repository-directories~
  in ~.dir-locals.el~.  #5658

Bugfixes:

- Fixed a regression in ~magit-stage-untracked~.  #5635

- ~bug-reference-mode~ did not work in buffers used to write commit
  messages.  fe66e74a

- ~bug-reference-mode~ needed help doing its work in files located
  in the gitdir (which Magit uses when authoring commit messages).
  fe66e74a

- ~magit-branch-delete~ failed to delete remote branches on remotes
  whose name contain a slash.  #5637

- When invoked from a modified file, ~magit-status-here~ no longer
  jumped to the correct location.  #5641

- When visiting a blob from a buffer visiting the respective file in
  the worktree, the position was not restored in the target buffer.

- ~magit-toplevel~ did not work from a subdirectory of the gitdir of
  a submodule, and signaled an error from the gitdir of a regular
  repository, which happens to be a subdirectory of a directory
  named "modules".  #5644

- ~magit-branch~ and ~magit-remote~ were not fully refreshed in an
  edge-case.  #5642

- GnuPG became more verbose in some cases, which we weren't prepared
  to handle, causing failures in properly formatting the output.
  #5643

- After adding a worktree to a bare repository, trying to create
  a commit from the worktree signaled an error.  #5636

- The script used to call back into Emacs from Git hooks failed if the
  path to ~emacsclient~ needs shell quoting.  #5651

- A local file was used to collect standard error of remote processes,
  causing an unnecessary round-trip.  #5654

- In logs dedicated to selecting a commit (such as when starting a
  rebase), the wrong section was highlighted initially.  #5653

- On remote systems and when ~with-editor-emacsclient-executable~ is
  ~nil~, no longer try to call back from Git hooks into Emacs, which
  cannot work.  #5592

- When Git hooks are configured to call back into Emacs, and using
  an ~windows-nt~ Emacs together with Cygwin, members of ~$PATH~ were
  not translated, and the wrong path separator was used.  #5640

- In Emacs 31.1, Tramp changed/extended how it filters out environment
  variables, that should be hidden from processes on the remote.  This
  caused a variable to be filtered out, that must remain set for Magit
  to not drop data when creating a stash.  We now hold the variable as
  is expected from us, and added a safety-net, which asserts that the
  variable indeed remains set.  #5660
...
...