我一直在使用 git 来同步我的项目的两个副本,一个是我的本地机器,另一个是测试服务器。这是我使用 ssh 登录远程开发服务器时出现的问题;
git clone me@me.mydevbox.com:/home/chris/myproject Initialized empty Git repository in /tmp/myproject/.git/ Password: bash: git-upload-pack: command not found fatal: The remote end hung up unexpectedly fetch-pack from 'me@me.mydevbox.com:/home/chris/myproject' failed.
(文件名已更改以保护有罪…!)
两个盒子都运行 Solaris 10 AMD。我已经做了一些挖掘,如果我添加--upload-pack=$(which git-upload- pack)命令有效,(并根据 RTFM 解决方案证明它$PATH包含“git-upload-pack”的路径)但这真的很烦人,加上“git push”不起作用,因为我认为没有--unpack=选择。
--upload-pack=$(which git-upload- pack)
$PATH
--unpack=
顺便说一句,所有 git 命令在我的本地机器上都可以正常工作,它是相同版本的软件(1.5.4.2),安装在/usr/local/bin.
/usr/local/bin
有人可以帮忙吗?
确保git-upload-pack位于非登录 shell 的路径上。(在我的机器上它位于/usr/bin)。
git-upload-pack
/usr/bin
要从非登录 shell 查看您的路径在远程计算机上的样子,请尝试以下操作:
ssh you@remotemachine echo \$PATH
(这适用于 Bash、Zsh 和 tcsh,可能也适用于其他 shell。)
git-upload-pack如果它.bashrc返回.zshenv的路径不包括具有.cshrc.
.bashrc
.zshenv
.cshrc
您将需要在远程计算机上进行此更改。
如果您不确定需要将哪个路径添加到您的 remote PATH,您可以使用以下命令找到它(您需要在远程机器上运行它):
PATH
which git-upload-pack
在我打印的机器上/usr/bin/git-upload-pack。因此,在这种情况下,/usr/bin您需要确保的路径位于远程非登录 shellPATH中。
/usr/bin/git-upload-pack