无法通过HTTP克隆git仓库;info/refs未找到。

22

我正在尝试通过http协议使git仓库只读,由于我的主机系统上没有安装git-http-backend,所以我采用了旧的方式,将裸仓库放置在可以通过http访问的位置。

我成功地在主机上使用git clone --bare <some-remote-location>创建了裸仓库。

现在,当我使用git clone http://my.host.name/location指向新克隆的仓库时,会提示repository not found的信息。

当我捕获网络流量时,我发现git试图访问http://my.host.name/location/info/refs。这是预料之外的失败,因为仓库中没有info/refs路径,而是直接位于仓库根目录下的inforefs目录。

显然,克隆的裸仓库结构与客户端的期望不符。有人知道这可能是为什么吗?

5个回答

27

3
此外,您需要在裸库中执行此操作。 - Luc

10

请按照 git-scm 上的步骤,尝试使用 http/s 协议。

基本上,在执行 git clone --bare <path-to-repository> 后,您需要在裸仓库内运行 mv hooks/post-update.sample hooks/post-update,然后执行 git update-server-info 一次,然后您就可以克隆仓库了。


1

当远程仓库运行在 git 1.7.X 版本,而 git 客户端是 1.8.X 版本时,我遇到了这个问题;通过将客户端降级到 1.7.X 版本来证明了这一点 - 这解决了问题。因此,请确保客户端和服务器端的 git 版本相同。我运行的命令是 git clone 。


我也曾经遇到过同样的问题,后来发现是因为服务器发送的字符集是UTF-8。请参考https://github.com/takezoe/gitbucket/issues/20。 - AlexDev

0

我在克隆一个 GitLab 项目 时遇到了同样的错误,因为我设置了错误的路径!
我使用了 SSH 路径而不是 HTTP 路径。(+ 不要忘记加上 .git

git clone *HTTP_path.git*

-1

还要记得检查 Apache 上是否启用了所需的模块。以下是 Git over HTTP 所需的模块:

  • mod_alias
  • mod_cgi
  • mod_env

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