|Description||Git integration for Emacs|
Magit is an Emacs mode for working with Git repositories. It provides a convenient interface for the most common Git operations.
- 1 Basic setup
- 2 Helpful keybindings
- 3 Forge: interface to Github, Gitlab and other Git forges
- 4 Common Customization
- 5 Transient, the Magit pop-up system
- 6 Extensions
- 7 See Also
- 8 Project Pages
Install Magit from MELPA:
package-install RET magit RET
And require it in your dotfile:
- M-x magit-status is the main entry point to Magit. The author recommends binding this command to "a key of your choice". is a common choice:
(global-set-key (kbd "C-x g") 'magit-status)
The official Magit documentation is excellent and should be consulted for further information.
Forge: interface to Github, Gitlab and other Git forges
Forge, released in december 2018, allows you to work with Git forges—such as Github and Gitlab—from the comfort of Magit and the rest of Emacs. We can manage branches, pull requests and issues, these two being called "topics" in the documentation.
Forge can be seen as the successor of 'magithub', which was limited to Github, and 'magit-gh-pulls'.
Loading Magit doesn’t cause Forge to be loaded automatically. Adding something like this to your init file takes care of this:
(with-eval-after-load 'magit (require 'forge))
Or if you use use-package:
(use-package forge :after magit)
Change magit diff colors
If you want more common colors (green and red), instead of psyche highlighting:
The following way seems not working with recent Magit.
(eval-after-load 'magit '(progn (set-face-foreground 'magit-diff-add "green3") (set-face-foreground 'magit-diff-del "red3") (unless window-system (set-face-background 'magit-item-highlight "black"))))
Try this with recent Magit.
(custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. ;; Your init file should contain only one such instance. ;; If there is more than one, they won't work right. '(magit-diff-added ((t (:background "black" :foreground "green3")))) '(magit-diff-removed ((t (:background "black" :foreground "red3")))))
Use ido to checkout branches
(setq magit-completing-read-function 'magit-ido-completing-read)
Transient, the Magit pop-up system
Transient is, since february 2019, an independent package that powers the famous Magit pop-up system. It superseedes magit-pop-up.
magit-filenotify: refresh status buffer when git tree changes
This module, to be installed with ELPA, comes with a minor mode magit-filenotify which tracks changes in the source tree using file-notify and refreshes the magit status buffer. Emacs 24.4 with `file-notify-support' is required for it to work.
home and documentation: https://github.com/magit/magit-filenotify
magit-todos displays keyword entries from source code comments and Org files in the Magit status buffer. Activating an item jumps to it in its file. By default, it uses keywords from hl-todo, minus a few (like NOTE).