0

我正在尝试在我的 Synology DS212J NAS 服务器上设置 git origin。当我尝试使用此命令推送到服务器时:

git remote add nas ssh://username@nasip/volume1/path/to/repo/repo.git
git push nas master

首先提示我输入我的密码。然后我收到以下错误:

sh: git-receive-pack: not found
fatal: The remote end hung up unexpectedly

有谁知道这意味着什么或我该如何解决?

编辑:这就是我所关注的,但是当我尝试推送到遥控器时出现错误。 http://rubypane.blogspot.com/2012/03/creating-new-git-repository-on-synology.html

4

2 回答 2

4

正如上面 che 和其他人所解释的,这是您的 Synology NAS 上的路径设置有问题。通常,您的 .profile 和 /etc/profile 在通过 ssh 登录时会被解析,但在这种情况下并非如此。虽然这可以按照 wonko 在http://www.wonko.de/2010/04/set-up-git-on-synology-nas.html(第 6 步)中的解释进行调整,但我不想让用户更改他们的环境。我建议的替代方法是简单地创建符号链接。请执行下列操作:

cd /opt/bin
for gitfile in git* ; do ln -s /opt/bin/$gitfile /bin/$gitfile ; done

请记住在发出这些命令之前以 root 身份登录。

于 2012-06-16T22:04:43.607 回答
3

这看起来像你的远程盒子上没有安装 git。Git 在 ssh 上使用它自己的协议,因此您需要拥有能够理解另一端的 git 对象的二进制文件。

您的客户端尝试运行的程序是git-receive-pack,因此请尝试从您的盒子上的 shell 运行。如果可行,您会看到类似

che@nok ~ $ git receive-pack
usage: git receive-pack <git-dir>

如果没有:

-bash-4.0# git-receive-pack
-bash: git-receive-pack: command not found

如果你在那里安装了 git,你应该尝试在git receive-pack那里工作。如果是这样,您可能只需要将 git 符号链接到路径中某处的 git-receive-pack 即可。

跑步

cd `which git`
ln -si git git-receive-pack

在 root 下可能会为你做这件事。

于 2012-05-28T14:15:14.777 回答