ELPA Logo NonGNU-devel ELPA: magit

magit Atom Feed

Description
A Git porcelain inside Emacs
Latest
magit-4.7.1.0.20260922.12.tar (.sig), 2026-Sep-22, 2.01 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

Old versions

magit-4.7.1.0.20260920.9.tar.lz2026-Sep-21 341 KiB
magit-4.7.1.0.20260919.8.tar.lz2026-Sep-20 340 KiB
magit-4.7.1.0.20260917.6.tar.lz2026-Sep-17 340 KiB
magit-4.7.1.0.20260907.3.tar.lz2026-Sep-07 340 KiB
magit-4.7.0.0.20260831.21.tar.lz2026-Aug-31 340 KiB
magit-4.7.0.0.20260731.0.tar.lz2026-Aug-01 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.1    2026-09-01

- In repository listings the home directory is now used as
  ~default-directory~.  874781fe

- Added ~--merge~ to ~magit-branch~ menu.  874781fe

- In Dired buffers ~magit-read-repository~ now defaults to the
  repository at point.  1b50adfc

- ~magit-gitdir~ now supports returning the common Git directory.
  #5614

- Added ~--find-copies-harder~ to diff menus because ~-C~ often doesn't
  do anything if the former isn't used as well.  Both arguments are
  hidden by default now.  #5629

Bugfixes:

- ~magit-generate-changelog~ failed inside a worktree that specifies
  the path to the Git directory using a relative path.  #5582

- ~magit-local-branch-p~ recently started using ~--branches~ but that
  was only added in Git v2.46.0.  #5625

- ~magit-gitignore-in-gitdir~ did not account for linked worktrees.
  #5614

- ~magit-xref-restore~ needlessy called ~magit-refresh-buffer~.
  ~magit-setup-buffer-internal~ already takes care of that.  #5626

- ~magit--blob-normal-mode~ bound ~after-change-major-mode-hook~ to
  suppress certain hook functions, which prevented additions to
  that hook from persisting, which can happen due to lazy loading.
  #5627

- ~--find-copies-harder~ is no longer added if ~-C~ is used, because
  the former renders the latter ineffective.  #5629

- ~magit-toplevel~ did not work inside the Git directory of a submodule.
  e47eb827

* v4.7.0    2026-08-01

- If the region marks a single commit, ~magit-patch-create~ now creates
  a patch for that, instead of prompting.  Previously that was only
  done if multiple commit were marked.  #4734

- When reading a value for ~git diff~'s ~--find-renames~ or ~--find-copies~
  argument, the similarity index can now be specified as a percentage
  or as a fraction.  The input now has to exactly match the value, as
  used by Git; e.g., "20%" or "05".  The latter is interpreted as the
  fraction 0.05.  #4708

- Added optional DIRECTORY argument to ~magit-status-quick~, intended
  for use in third-party repository switchers.  #4636

- Added new command ~magit-log-reflog~, which shows the log for all
  objects mentioned in all reflogs.  #4748

- When ~gpg.format~ specifies a format other than openpgp, the menu
  argument ~--gpg-sign~ now acts as a boolean toggle.  Previously it
  always wanted to read an openpgp key, making it impossible to
  toggle ssh or x509 signing from the menu.  The used format is now
  shown in the menu.  #5046

- Added ~--reject~ to ~magit-am~ menu.  #5148

- Added Git v2.55's new ~--graph-lane-limit~ to log menus.  It is hidden
  by default and not available when using an older Git.  #5088

- ~magit-file-untrack~, ~magit-file-rename~, ~magit-file-delete~ and
  ~magit-do-async-shell-command~ can now act on directories.  #5247

- ~magit-process-kill~ now first tries to interrupt the process.
  If that fails, a second invocation instead kills it.  #5086

- Added help text for the ~Filter!~ status section.  #5121

- By default, submodules with untracked content are now also listed
  in the status of the super-repository.  #5448

- Added ~--redit-message~ to the ~magit-commit~ menu.  That argument and
  ~--reuse-message~ now usually default to the commit at point, but when
  invoked with a prefix argument, the user can instead select the
  commit from a log.  #5602

- Added new option ~magit-submodule-list-predicate~ and taught
  ~magit-submodule-list~ to support unpopulated modules.  #5077

- When ~magit-bisect-start~ and ~magit-bisect-run~ are invoked with the
  region marking a range of consecutive commit, the commits at the
  ends are used as the good and bad commits.  #5049

- ~magit-branch-checkout~ now always passes the commit, which is to be
  checked out, to the function used to read the worktree directory
  from the user.  Previously this was only done for local branches.
  #5502

- Added new command ~magit-checkout-remote-ref~.  #5410

- ~magit-project-status~ is no longer added to ~project-switch-commands~.
...
...