When pulling from a remote git repository located on shared hosting you will get the “git-upload-pack: command not found” error. A similar error occurs with the git-receive-pack when doing a push as well. This occurs when git is installed locally (in your home directory), and not system wide because git cannot locate these binaries.
Normally this can be fixed by setting the $PATH environment variable to include the correct path to these binaries on the remote server. Unfortunately it will not work in this case as .bashrc is not sourced since the command is invoked in non-interactive mode via ssh.
There are 2 solutions to this problem.
The first solution is to explicitly include the path to the binaries when pushing or pulling from your local repository.
$ git pull --upload-pack /path/to/git/git-upload-pack
$ git push --receive-pack /path/to/git/git-receive-pack
The second solution involves adding the path to your git-upload-path and git-recieve-path in your local .git/config file under [remote “origin”]. This is the easiest method as you only have to make this change once.
[remote "origin"]
url = <repo address>
fetch = +refs/heads/*:refs/remotes/origin/*
uploadpack = <path to git-upload-pack>
receivepack = <path to git-receive-pack>