为什么这个git clone命令失败了?

26

尝试使用 git clone 命令。我的理解是(如果不正确请指出)你只需要有一台运行 ssh 的机器和一个位于允许位置的项目/仓库,就可以托管 Git 仓库。

我在运行 ssh 的 OS X 系统上拥有我的 git 仓库。我正在尝试在 Windows XP 系统上克隆它。在 XP 机器上安装了 Git Bash。在 Git Bash(MINGW)控制台中,我可以轻松地通过 ssh 连接到 Mac。

然而,git clone 失败了...

$ git clone username@host:~/project/path/contactdb
Initialized empty Git repository in 
  c:/Documents and Settings/Administrator/My Documents/projects/contactdb/.git/
bash: git-upload-pack: command not found
fatal: The remote end hung up unexpectedly

我已经尝试过使用.git扩展名和不使用扩展名:

$ git clone username@host:~/project/path/contactdb

$ git clone username@host:~/project/path/contactdb.git

我需要在Mac上安装其他软件吗?


2
只有在远程目录名称附加了.git时,您才需要尝试使用.git扩展名。 - Alan Haggai Alavi
谢谢,我一直在想这个问题。 - Ethan
2
如果您正在通过ssh连接,请使用以下命令: git clone ssh://user@host/~/project/path/contactdb - gahooa
1
Ethan 目前通过 SSH 连接的方式是正确的。 - Alan Haggai Alavi
可能是重复的问题:git-upload-pack: command not found, how to fix this correctly - viam0Zah
显示剩余2条评论
9个回答

21

在想要克隆Git存储库的机器上必须安装Git;而在使用ssh时,远程机器上必须将git-upload-pack放置在$PATH中。如果直接通过ssh连接到远程机器时出现以下类似响应:

$ ssh username@host git-upload-pack --help
usage: git upload-pack [--strict] [--timeout=nn] <dir>

或以下(错误的)回应:

$ ssh username@host git-upload-pack --help
bash: git-upload-pack: command not found

(当然,shell的名称取决于远程使用的内容)。

另一个可能存在问题的地方是远程机器配置不正确,因此在ssh连接中使用交互式shell,可能会在连接时给出一些消息,或设置类似臭名昭著的$CDPATH环境变量之类的交互式变量。


1
你救了我的一天!我完全忘记在远程机器上安装“git-core”了。 - Juande Carrion

7
我通过在远程计算机的~/.bashrc文件中添加以下行来解决了这个问题:
export PATH=$PATH:"/usr/local/bin:/usr/local/git/bin"

问题在于$PATH对于非交互式会话不包括/usr/local/git/bin。将其添加到~/.bashrc中可以解决这个问题。

非常感谢你,亲爱的。这救了我的一天。 - Muneer

4
另一种方法是执行以下操作:
git clone --upload-pack /path/to/git-upload-pack ssh://user@host/~/project/path/contactdb

3
我使用以下命令进行克隆,这对我来说起作用了:

git clone mysite.net:/path/to/site


2

我在mac os上遇到了同样的问题,通过将git-upload-pack从/usr/local/git/bin复制到/bin中解决了这个问题。


1
那并没有解决问题,他需要将路径添加到环境变量中。为什么要移动二进制文件呢? - sdot257
它已经包含在PATH中,但仍然存在问题,我不知道为什么,所以我将其移动到了垃圾箱,现在它可以工作了。也许你是对的,但这正是我在我的电脑上解决这个问题的方法。 - whitefoxx

1
我曾经遇到过同样的问题,没有删除过期证书所有突然它开始工作了。这一次我唯一做的不同之处是将 WiFi 从连接到代理网络切换到我的私人移动热点。然后我在终端中运行以下命令。
$ git clone https://my-login@bitbucket.org/project-folder/project-name.git

然后它开始克隆并请求密码。
Cloning into 'project-name'...
Password for 'https://my-login@bitbucket.org':

代码库已下载完成。

remote: Counting objects: 2449, done.
remote: Compressing objects: 100% (1244/1244), done.
remote: Total 2449 (delta 1388), reused 1999 (delta 1070)
Receiving objects: 100% (2449/2449), 768.56 KiB | 101.00 KiB/s, done.
Resolving deltas: 100% (1388/1388), done.

这个对我起作用了 *挠头。不确定为什么它起作用了。 - mpalencia

0

0

我尝试了一切,验证了我的密钥、路径和工具版本。但是,我无法使用“git shell”、“git gui”和“tortoise git”从github克隆存储库。

我下载并安装了“Visual Studio Tools for Git”(需要“VS2012 Update 2 CTP”),并能够从Visual Studio内部克隆存储库:

  • 单击“主菜单->查看->团队资源管理器”
  • 单击“团队资源管理器->连接到团队项目”
  • 单击“团队资源管理器->本地Git存储库部分->克隆”
  • 输入要克隆的Git Repo的URL(黄色框)
  • 输入或浏览要克隆到的本地文件夹
  • 单击“克隆”

片刻之后,存储库就被克隆了。我已经成功地以这种方式克隆了大约半打存储库,而msysgit、github和tortoisegit都未能按预期工作。


0
对于msysgit,如果路径包含空格,则使用-u选项提供git-upload-pack路径不起作用,因为似乎不支持引号(单引号、双引号)(1.7.11.msysgit.1)。 将其添加到我的PATH中可行(C:\ Program Files(x86)\ Git \ libexec \ git-core)。[但是,我的设置还存在其他问题]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接