为了账号安全,请及时绑定邮箱和手机立即绑定

克隆远程Git仓库时找不到git-upload-pack:命令

克隆远程Git仓库时找不到git-upload-pack:命令

Git
偶然的你 2019-08-30 16:29:25
我一直在使用git来保持我的项目的两个副本同步,一个是我的本地盒子,另一个是测试服务器。这是当我使用ssh登录到远程开发服务器时发生的问题;git clone me@me.mydevbox.com:/home/chris/myprojectInitialized empty Git repository in /tmp/myproject/.git/Password:bash: git-upload-pack: command not foundfatal: The remote end hung up unexpectedlyfetch-pack from 'me@me.mydevbox.com:/home/chris/myproject' failed.(文件名已被更改以保护有罪......!)两个盒子都运行Solaris 10 AMD。我已经做了一些挖掘,如果我添加--upload-pack=$(which git-upload-pack)命令工作,(并证明它$PATH包含根据RTFM解决方案'git-upload-pack'的路径)但这真的很烦人,加上'git push'不起作用,因为我认为没有--unpack=选择。顺便说一下,所有的git命令都可以在我的本地方框中正常工作,它与安装在同一个NFS挂载上的软件(1.5.4.2)版本相同/usr/local/bin。有人可以帮忙吗?
查看完整描述

3 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

确保git-upload-pack在非登录shell的路径上。(在我的机器上它就在/usr/bin)。


要从非登录shell查看远程计算机上的路径,请尝试以下操作:


ssh you@remotemachine echo \$PATH

(适用于Bash,Zsh和tcsh,也可能适用于其他shell。)


如果它返回的路径不包含已有的目录,则git-upload-pack需要通过将其设置为.bashrc(对于Bash),.zshenv(对于Zsh),.cshrc(对于tcsh)或等效的shell 来修复它。


您需要在远程计算机上进行此更改。


如果您不确定需要添加到远程控制器的路径PATH,可以使用此命令找到它(需要在远程计算机上运行):


which git-upload-pack


在我打印的机器上/usr/bin/git-upload-pack。因此,在这种情况下,/usr/bin您需要确定的路径是否在远程非登录shell中PATH。


查看完整回答
反对 回复 2019-08-30
?
温温酱

TA贡献1752条经验 获得超4个赞

您还可以使用“-u”选项指定路径。我发现这对我的.bashrc不会在非交互式会话中获取的机器很有用。例如,


git clone -u /home/you/bin/git-upload-pack you@machine:code


查看完整回答
反对 回复 2019-08-30
?
月关宝盒

TA贡献1772条经验 获得超5个赞

基于Brian的回答,可以通过在克隆之后运行以下命令来永久地设置上载包路径,这消除了--upload-pack对后续拉/取请求的需要。同样,设置receive-pack消除了--receive-pack对推送请求的需要。


git config remote.origin.uploadpack /path/to/git-upload-pack

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

这两个命令相当于将以下行添加到repo中.git/config。


[remote "origin"]

    uploadpack = /path/to/git-upload-pack

    receivepack = /path/to/git-receive-pack

频繁的用户clone -u可能对以下别名感兴趣。myclone应该是不言自明的。myfetch / mypull / mypush可以在其回购配置为通过替换上述没有被修改被用于git push与git mypush,等等。


[alias]

    myclone = clone --upload-pack /path/to/git-upload-pack

    myfetch = fetch --upload-pack /path/to/git-upload-pack

    mypull  = pull --upload-pack /path/to/git-upload-pack

    mypush  = push --receive-pack /path/to/git-receive-pack


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 4109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信