4.6.4 Git Executable
When Magit calls Git, then it may do so using the absolute path to the git
executable, or using just its name.
When running git
locally and the system-type
is 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​
The 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​
The 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 exec-path
or tramp-remote-path
is correct.
Note that 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.
The command magit-debug-git-executable
can be useful to find out where Emacs is searching for git
.
M-x magit-debug-git-executable
    (magit-debug-git-executable
)​
This command displays a buffer with information about magit-git-executable
and magit-remote-git-executable
.
M-x magit-version
    (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.