试图设置远程git,推送初始提交给出“git-receive-pack:not found”

时间:2012-05-28 14:11:44

标签: git push nas

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

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

2 个答案:

答案 0 :(得分:4)

正如che和其他人解释的那样,这是synology NAS上路径设置的问题。通常,在通过ssh登录时会解析.profile和/ etc / profile,但在这种情况下不是这样。虽然可以根据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用户身份登录。

答案 1 :(得分: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下可能会为你做。