git-receive-pack:找不到命令

时间:2014-03-08 15:56:40

标签: git ssh

我正在尝试使用Git推送到我的远程服务器,但它一直说git-receive-pack:命令未找到。我尝试搜索,有些人说它是服务器,其他人说它是客户端。

操作系统:Windows 8 64位 服务器:具有CPanel最新版本的Cent OS

Git内置于CPanel,我没有安装它。

http://imgur.com/Gg7uGcF,acp26eE

也许如果我知道哪个系统正在说错误,我可以更好地排除故障。另外,我对SSH一无所知。我尝试插入由GIT生成的SSH密钥,但是当我尝试使用SSH时://它仍然只是要求输入密码。因此可能无法正确设置某些内容。我将git用户添加到系统中,其存储库就像git说明所做的那样,但我向用户添加了一个密码,看看它是否会让我在没有SSH的情况下登录。

2 个答案:

答案 0 :(得分:9)

运行 git push 时,协议的send-pack部分正在本地运行,并且它连接到远程端运行的receive-pack部分。

因此,假设您运行 git push ,其中远程 origin repo配置为使用ssh并映射到 server.com 。 Git使用send-pack通过ssh启动与从远程URL * 中提取的服务器的连接:

$ ssh server.com "git-receive-pack /path/to/repo.git"

<子> * 当存储库先前被克隆或添加为git remote add origin ssh://server.com/path/to/repo.git

请注意,引用的命令由远程服务器上的ssh运行,并且可能无法找到git-receive-pack。您可以按照以下方式自行测试:

$ ssh server.com "type -p git-receive-pack" || echo "git-receive-pack not found"

如果确实无法将git-receive-pack命令放在遥控器上 - 例如,因为它不在远程登录shell的PATH中,您可以告诉 git push 应该通过运行来查找它:

$ git push --receive-pack=/server/com/full/path/to/git-receive-pack

你可以通过告诉git记住通过配置使用显式路径来保存每次推送时的输入:

$ git config remote.origin.receivepack /server/explicit/path/to/git-receive-pack

答案 1 :(得分:4)

真正的答案是即使我把

  

alias git-receive-pack =“/ usr / local / cpanel / 3rdparty / bin / git-receive-pack”

我仍然需要将其添加到我的~/.bashrc

  

export PATH = $ PATH:“/ usr / local / cpanel / 3rdparty / bin”

另外,在旁注中,可以通过删除stdin: is not a TTY文件来解决整个/home/git/.bashrc错误。

如:http://webhostingneeds.com/Git_stdin_is_not_a_tty

中所述