When Magit calls Git, then it may do so using the absolute path to the
git executable, or using just its name.
git locally and the
windows-nt (any Windows version) or
darwin (macOS) then
magit-git-executable is set to an absolute path when Magit is loaded.
On Windows it is necessary to use an absolute path because Git comes with several wrapper scripts for the actual
git binary, which are also placed on
$PATH, and using one of these wrappers instead of the binary would degrade performance horribly. For some macOS users using just the name of the executable also performs horribly, so we avoid doing that on that platform as well. On other platforms, using just the name seems to work just fine.
Using an absolute path when running
git on a remote machine over Tramp, would be problematic to use an absolute path that is suitable on the local machine, so a separate option is used to control the name or path that is used on remote machines.
user option magit-git-executable
git executable used by Magit on the local host. This should be either the absolute path to the executable, or the string "git" to let Emacs find the executable itself, using the standard mechanism for doing such things.
user option magit-remote-git-executable
git executable used by Magit on remote machines over Tramp. Normally this should be just the string "git". Consider customizing
tramp-remote-path instead of this option.
If Emacs is unable to find the correct executable, then you can work around that by explicitly setting the value of one of these two options. Doing that should be considered a kludge; it is better to make sure that the order in
tramp-remote-path is correct.
exec-path is set based on the value of the
PATH environment variable that is in effect when Emacs is started. If you set
PATH in your shell’s init files, then that only has an effect on Emacs if you start it from that shell (because the environment of a process is only passed to its child processes, not to arbitrary other processes). If that is not how you start Emacs, then the
exec-path-from-shell package can help; though honestly I consider that a kludge too.
magit-debug-git-executable can be useful to find out where Emacs is searching for
M-x magit-debug-git-executable (
This command displays a buffer with information about
M-x magit-version (
This command shows the currently used versions of Magit, Git, and Emacs in the echo area. Non-interactively this just returns the Magit version.