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

我一直在使用git来保持我的项目的两个副本同步,一个是我的本地盒子,另一个是测试服务器。这是当我使用ssh登录到远程开发服务器时发生的问题;


git clone me@me.mydevbox.com:/home/chris/myproject

Initialized empty Git repository in /tmp/myproject/.git/

Password:

bash: git-upload-pack: command not found

fatal: The remote end hung up unexpectedly

fetch-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。


有人可以帮忙吗?


偶然的你
浏览 4125回答 3
3回答

Helenr

确保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。

温温酱

您还可以使用“-u”选项指定路径。我发现这对我的.bashrc不会在非交互式会话中获取的机器很有用。例如,git clone -u /home/you/bin/git-upload-pack you@machine:code

月关宝盒

基于Brian的回答,可以通过在克隆之后运行以下命令来永久地设置上载包路径,这消除了--upload-pack对后续拉/取请求的需要。同样,设置receive-pack消除了--receive-pack对推送请求的需要。git config remote.origin.uploadpack /path/to/git-upload-packgit 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
打开App,查看更多内容
随时随地看视频慕课网APP