Skip to main content

2.2 Installing from the Git Repository

Magit depends on the dash, transient and with-editor libraries which are available from Melpa and Melpa-Stable. Install them using M-x package-install RET <package> RET. Of course you may also install them manually from their repository.

Then clone the Magit repository:

$ git clone https://github.com/magit/magit.git ~/.emacs.d/site-lisp/magit
$ cd ~/.emacs.d/site-lisp/magit

Then compile the libraries and generate the info manuals:

$ make

If you haven’t installed dash, transient and with-editor from Melpa or at /path/to/magit/../<package>, then you have to tell make where to find them. To do so create the file /path/to/magit/config.mk with the following content before running make:

LOAD_PATH  = -L ~/.emacs.d/site-lisp/magit/lisp
LOAD_PATH += -L ~/.emacs.d/site-lisp/dash
LOAD_PATH += -L ~/.emacs.d/site-lisp/transient/lisp
LOAD_PATH += -L ~/.emacs.d/site-lisp/with-editor

Finally add this to your init file:

(add-to-list 'load-path "~/.emacs.d/site-lisp/magit/lisp")
(require 'magit)

(with-eval-after-load 'info
(info-initialize)
(add-to-list 'Info-directory-list
"~/.emacs.d/site-lisp/magit/Documentation/"))

Of course if you installed the dependencies manually as well, then you have to tell Emacs about them too, by prefixing the above with:

(add-to-list 'load-path "~/.emacs.d/site-lisp/dash")
(add-to-list 'load-path "~/.emacs.d/site-lisp/transient/lisp")
(add-to-list 'load-path "~/.emacs.d/site-lisp/with-editor")

Note that you have to add the lisp subdirectory to the load-path, not the top-level of the repository, and that elements of load-path should not end with a slash, while those of Info-directory-list should.

Instead of requiring the feature magit, you could load just the autoload definitions, by loading the file magit-autoloads.el.

(load "/path/to/magit/lisp/magit-autoloads")

Instead of running Magit directly from the repository by adding that to the load-path, you might want to instead install it in some other directory using sudo make install and setting load-path accordingly.

To update Magit use:

$ git pull
$ make

At times it might be necessary to run make clean all instead.

To view all available targets use make help.

Now see Post-Installation Tasks.