我正在尝试使用Git推送到我的远程服务器,但它一直说git-receive-pack:命令未找到。我尝试搜索,有些人说它是服务器,其他人说它是客户端。
操作系统:Windows 8 64位 服务器:具有CPanel最新版本的Cent OS
Git内置于CPanel,我没有安装它。
http://imgur.com/Gg7uGcF,acp26eE
也许如果我知道哪个系统正在说错误,我可以更好地排除故障。另外,我对SSH一无所知。我尝试插入由GIT生成的SSH密钥,但是当我尝试使用SSH时://它仍然只是要求输入密码。因此可能无法正确设置某些内容。我将git用户添加到系统中,其存储库就像git说明所做的那样,但我向用户添加了一个密码,看看它是否会让我在没有SSH的情况下登录。
答案 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
错误。