问题 GIT:推送到远程服务器时出现“git-upload-pack:command not found”


所以我正在使用GIT,试图将代码推送到我的远程服务器。

  • 在共享的unix主机上,我不允许拥有自己的环境变量(阻止SSH帐户)并且没有sudo访问权限。
  • 设法在我的/ home /中成功安装git
  • 尝试将代码推送到服务器返回:bash:git-upload-pack:命令未找到
  • $ PATH变量已设置 - 因为git安装在我的/ home /
  • 为了让事情有效,我不得不使用以下克隆命令:

    git clone -u / home / bin / git-upload-pack user@server.com:mygitfolder

  • 本地机器/远程服务器上相同版本的git(1.7.0.4)

所以从我可以收集的内容来看,我基本上需要:

  • 找到一种方法来在每次推送到服务器时包装我的环境变量 要么
  • 在推送到服务器时指定我的git-receive-pack的路径

我知道我可以创建一个在我推动时生效的钩子,但是没有设法找到它的实现位置和方式。

(我宁愿不在我的本地机器上创建别名)


3338
2018-05-17 22:04


起源



答案:


如果无法调整远程端的有效PATH1,那么你必须从你当地指定程序的位置。

如你所见, git clone 可以给 -u /path/to/git-upload-pack (要么 --upload-pack /path/to/git-upload-pack)。

git fetch 和 git pull 接受 --upload-pack /path/to/git-upload-pack (不 -u但是,因为它对这些程序意味着什么)。他们也检查了 remote.<name>.uploadpack 配置变量。

git push 接受 --receive-pack /path/to/git-receive-pack 并检查 remote.<name>.receivepack 配置变量。

克隆存储库后,可以使用配置变量记录路径:

git clone -u /home/bin/git-upload-pack user@server.com:mygitfolder
cd mygitfolder
git config remote.origin.uploadpack /home/bin/git-upload-pack
git config remote.origin.receivepack /home/bin/git-receive-pack

然后,您可以在不必指定路径的情况下进行推送,提取或拉取。


1 你说“SSH帐户的环境变量被阻止了”。如果你的意思是 sshd的 有它的 PermitUserEnvironment 设置已关闭(意味着您无法使用 environment="PATH=/home/bin:/usr/bin:/bin" 在你的 .ssh/authorized_keys 文件),那么你仍然可以通过shell初始化文件修改你的默认PATH(例如 .bashrc)。


15
2018-05-18 04:46



A)这看起来正确,我离开我的终端但是会尽快尝试B)是的PermitUserEnvironment关闭sshd帐户 - 感谢整改:) - L-R
有一些后续错误,但现在都修复了! - L-R


答案:


如果无法调整远程端的有效PATH1,那么你必须从你当地指定程序的位置。

如你所见, git clone 可以给 -u /path/to/git-upload-pack (要么 --upload-pack /path/to/git-upload-pack)。

git fetch 和 git pull 接受 --upload-pack /path/to/git-upload-pack (不 -u但是,因为它对这些程序意味着什么)。他们也检查了 remote.<name>.uploadpack 配置变量。

git push 接受 --receive-pack /path/to/git-receive-pack 并检查 remote.<name>.receivepack 配置变量。

克隆存储库后,可以使用配置变量记录路径:

git clone -u /home/bin/git-upload-pack user@server.com:mygitfolder
cd mygitfolder
git config remote.origin.uploadpack /home/bin/git-upload-pack
git config remote.origin.receivepack /home/bin/git-receive-pack

然后,您可以在不必指定路径的情况下进行推送,提取或拉取。


1 你说“SSH帐户的环境变量被阻止了”。如果你的意思是 sshd的 有它的 PermitUserEnvironment 设置已关闭(意味着您无法使用 environment="PATH=/home/bin:/usr/bin:/bin" 在你的 .ssh/authorized_keys 文件),那么你仍然可以通过shell初始化文件修改你的默认PATH(例如 .bashrc)。


15
2018-05-18 04:46



A)这看起来正确,我离开我的终端但是会尽快尝试B)是的PermitUserEnvironment关闭sshd帐户 - 感谢整改:) - L-R
有一些后续错误,但现在都修复了! - L-R