【问题标题】:GIT : "git-upload-pack: command not found" while pushing to remote serverGIT:“git-upload-pack:找不到命令”,同时推送到远程服务器
【发布时间】:2011-08-27 14:51:54
【问题描述】:

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

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

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

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

所以从我能收集到的情况来看,我基本上需要:

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

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

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

【问题讨论】:

    标签: git unix version-control ssh


    【解决方案1】:

    如果您无法在远程端调整有效路径1,那么您将不得不从本地端指定程序的位置。

    如您所见,git clone 可以指定为-u /path/to/git-upload-pack(或--upload-pack /path/to/git-upload-pack)。

    git fetchgit 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 设置(意味着您不能在 .ssh/authorized_keys 文件中使用 environment="PATH=/home/bin:/usr/bin:/bin"),那么您仍然可以修改您的默认 PATH通过 shell 初始化文件(例如 .bashrc)。

    【讨论】:

    • A) 这看起来不错,我不在终端,但会尽快尝试 B) 是的,对 sshd 帐户关闭 PermitUserEnvironment - 感谢您的纠正:)
    猜你喜欢
    • 1970-01-01
    • 2012-06-23
    • 2010-09-18
    • 1970-01-01
    • 2013-02-25
    • 2012-07-30
    • 2012-05-07
    • 1970-01-01
    相关资源
    最近更新 更多