Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


It's Magit! A Git porcelain inside Emacs.

Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402 (1 ratings)
Rated 5.0 out of 5
Subscribe to updates I use magit

Statistics on magit

Number of watchers on Github 3207
Number of open issues 58
Average time to close an issue 2 days
Main language Emacs Lisp
Average time to merge a PR 2 days
Open pull requests 41+
Closed pull requests 103+
Last commit almost 2 years ago
Repo Created over 9 years ago
Repo Last Updated over 1 year ago
Size 19.2 MB
Organization / Authormagit
Latest Release2.11.0
Page Updated
Do you use magit? Leave a review!
View open issues (58)
View magit activity
View on github
Fresh, new opensource launches πŸš€πŸš€πŸš€
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating magit for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

A Git Porcelain inside Emacs

homepage | manual | faq | wiki | mailing list | forum | chat | news

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. (more)

Thanks to 1987 backers the Kickstarter campaign was a huge success! This September was very exciting and I would like to thank you all for your generosity and enthusiastic support!
Thank you! β€” Jonas Bernoulli

My thanks also go to these three sponsors!

Mojotech Google Open Source Directangular

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

Donate using PayPal Β Β  Donate monthly using Patreon Β Β  Donate weekly using Liberapay

Some alternative donation methods are available.


When something doesn't work as expected then please first see the FAQ. Then also try the list of open issues and use the search box at the top of that page to find older related issues. You should also consult the manual and ask a general-purpose search engine.

If that doesn't answer your question, then ask for help on the Emacs Stackexchange site, the mailing list, or the Gitter chat. We only use the GitHub issue tracker for feature requests and bug reports, so please don't ask for help there.


To report bugs and suggest new feature use the issue tracker. If you have some code which you would like to be merged, then open a pull request. Please also see


Magit was started by Marius Vollmer, and is now maintained by Jonas Bernoulli, Kyle Meyer, and Noam Postavsky. Other former maintainers are Nicolas Dudebout, Peter J. Weisberg, Phil Jackson, Rmi Vanicat, and Yann Hodique. Many more people have contributed code and suggested features.

Thanks to all of you, may (the history of) the source be with you!

GPL v3 Build Status Melpa Melpa Stable Git Xkcd Eierlegende Wollmilchsau Swiss Made Netscape Paren Xkcb

magit open issues Ask a question     (View All Issues)
  • about 3 years magit-log does not seem to read notes.displayRef
  • about 3 years Provide a function for launching β€œbarebones Emacs” with Magit
  • about 3 years Cleanup push-remote related variables after deletes and renames
  • about 3 years Support all git porcelain commands
  • about 3 years Implement magit-diff-buffer-with-file similar to diff-buffer-with-file
  • about 3 years Consider using asterisks at both ends of magit buffer names
  • about 3 years Emacs occasionally freezes after exiting from ediff mode...
  • about 3 years Make SPC scroll blob/file buffer while point is on diff
  • about 3 years Can't discard hunk for long diff - (wrong-type-argument stringp nil)
  • about 3 years Allow hunk-internal region to span multiple hunks
  • about 3 years Separate Configure section for magit-branch-popup?
  • about 3 years magit-log: ability to change commit timestamp format
  • about 3 years Generalize section visibility cache
  • about 3 years Support optional positional arguments in magit-popup
  • about 3 years git-commit font-lock improvements
  • about 3 years Compute the contents of more collapsed sections lazily
  • over 3 years undo-tree like interface to navigate in git history
  • over 3 years Improve Git config variable interface
  • over 3 years Let me edit the patch before staging or otherwise applying
  • over 3 years Side by side blame
  • over 3 years Support manually editing Git commands generated by popups
  • over 3 years vc-refresh-state on emacs 25
  • over 3 years Set initial values of popup arguments based on Git variables
  • over 3 years Show Log For A Line While Diffing
  • almost 4 years Allow performing many actions using the mouse
  • almost 4 years Use libgit2 in addition to git plumbing and porcelain
magit open pull requests (View All Pulls)
  • Added function magit-diff-buffer-file.
  • fetch-popup: Add magit-fetch-branch
  • magit-apply: add literal CR chars if necessary
  • git-commit-propertize-diff fixes
  • magit-branch-config-popup: new popup
  • magit-rebase-continue: with prefix argument reuse old message as-is
  • Add subtree popup
  • magit-stage: support --intent-to-add
  • Make magit-get setf'able
  • Make sure the right default-directory value is set to avoid the "Not …
  • Improve submodule commands
  • magit-list-repositories: new command
  • add magit-log-move-to-parent command
  • support globbing in diff and log file arguments
  • magit-bisect-visualize-log: new command
  • magit-ediff-stage: use same encoding for all texts
  • Use higher contrast for magit-blame with dark themes.
  • magit-get: return all lines of config value
  • add feature: stage hunk in magit-diff buffer
  • Recenter hunk after movement/refresh
  • List submodules using a tabulated-list-mode buffer
  • cache git config more aggressively (v2)
  • Adjust upstream when branching from remote branch
  • Add more fontification to git-commit.el
  • Document improved hunk-refining performance in release notes
  • Displace obsolete decoding function
  • display 'k' rather than 'C-k' for rebase-kill-line
  • Use nbutlast instead of butlast
  • Sort tags according to semver
  • Raise not just window but frame also
  • In the manual, add dummy subsection, wrapping initial section content
  • Update documentation about the prefixes used to show in-progress rebases
  • Make Shift-selection less surprising
  • Add more commands to the submodule popup
  • Remember arguments used in refs buffer and allow updating them without prefix arg
  • Remove org-export-ignore-headlines advice
  • magit-show-commit: when in a log buffer, use log's file restriction
  • fix show signature
  • More imenu support
  • magit-log-buffer-file: fix `-L` arg when region is active
  • Don't apply w32 env hacks for remote repositories
magit questions on Stackoverflow (View All Questions)
  • view a file's history in magit?
  • show HEAD in magit log
  • Magit Can't Find Git
  • magit-version in Emacs 24.4 on Windows returns Wrong argument type: stringp, nill
  • Emacs + magit - vertical blame
  • emacs magit: git-dir is not in the default place
  • In magit, can I interactively rebase onto another branch?
  • how do I undo rebase in magit?
  • Spacemacs Magit mode magit-refresh
  • Magit is very slow when committing on Windows
  • make magit display file size
  • Most developed magit/github extension for emacs for pull requests
  • How can I remove trailing whitespace from a hunk in Magit?
  • Emacs crashing when opening ediff merge window with Magit
  • Magit - rename last commit
  • Using emacs (and magit?) to visit a file in given commit/branch/etc
  • magit 2 equivalent of . command to mark commit
  • emacs daemon and magit
  • Emacs: Update git-gutter annotations when staging or unstaging changes in magit-status buffer
  • Launch magit directly from ido in Emacs
  • emacs magit switch to quick mode
  • how to set magit commit author?
  • emacs magit diff highlighting
  • How do you list tracked files (git ls-files) in magit?
  • How to make magit pull to have rebase option by default?
  • How can I diff a single file with magit?
  • emacs magit doesn't have remote repo straight
  • How can I unstage multiple hunks using magit?
  • magit for `pull --rebase upstream` (not origin)
  • magit merge conflict `checkout --theirs/--ours`
magit list of languages used
More projects by magit View all
Other projects in Emacs Lisp