无法通过 HTTP/HTTPS 从 Git 存储库提取数据,但可以通过 SSH 提取数据

无法通过 HTTP/HTTPS 从 Git 存储库提取数据,但可以通过 SSH 提取数据

我有一个运行 Nginx 的 Debian,git.example.com我用它来存储 git 存储库。

我可以通过运行 SSH 来拉取/推送/克隆。 (这是我的主目录中指向的符号链接)git clone [email protected]/git/my_repogit/mnt/primary_storage/git

但是,当我使用 HTTP(S) 克隆/拉取时出现以下错误:

fatal: http://git.example.com/my_repo.git/info/refs not valid: is this a git repository?

无论我是否克隆真实的存储库,都会出现此错误

Nginx 配置的相关部分是:

server {
  listen       80;
  server_name  git.example.com;

  root /mnt/primary_storage/git;


  location ~ (/.*) {
    auth_basic "Login";
    auth_basic_user_file /mnt/primary_storage/.htpasswd;
    include       fastcgi_params;
    fastcgi_param REMOTE_USER $remote_user;
    fastcgi_param SCRIPT_FILENAME     /usr/lib/git-core/git-http-backend;
    fastcgi_param GIT_HTTP_EXPORT_ALL "";
    fastcgi_param GIT_PROJECT_ROOT    /mnt/primary_storage/git;
    fastcgi_param PATH_INFO           $1;
    fastcgi_pass localhost:9000;
  }   
}

令人恼火的是,我在另一台装有 Ubuntu 的服务器上运行了完全相同的设置,并且运行正常。所以我不知道是什么原因造成的。除了这个问题之外,服务器上的一切都运行正常。

是的,StackExchange 网站上有一些类似的问题,但没有一个能帮助我。例如,其中一些人正在处理 Github,他们没有先设置存储库。其他人的 Git 地址是错误的。还有人说我应该运行,git config --global http.proxy但这没有帮助。

另外,我已经三次检查了所有文件夹/文件权限,并且它们对于 Nginx 用户来说都是可读写的。

答案1

为了正确地通过 HTTP(或任何其他支持打包的协议)进行打包,您需要手动进行打包。

您可以git update-server-info在存储库目录中运行来执行此操作。

post-update将其放在repo 中的 Git hook中可能会很方便,这样当您推送时它就会自动完成。

mtak@gen1:/srv/git/puppet.git/hooks$ cat post-update 
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".

exec git update-server-info

答案2

此错误消息与“存储库不存在”相同。

检查您使用的 URL 是否显示在命令的“获取和推送”下:

git remote show origin

这应该给出类似这样的结果[email protected]:[REPO-NAME].git

如果 URL 错误,可以通过以下命令修复:

git remote set-url origin [REPO-URL]

答案3

确保您尝试访问的 git repo 支持 HTTPS 协议?

另请注意,存储库名称区分大小写。

另外,请确保存储库 URL 可以从您的网络访问。可能存在端口 443 问题(https)。

如果您使用代理,请确保为 git 正确设置了代理!

git config --global http.proxy

另请参阅此处的信息: https://confluence.atlassian.com/bbkb/info-refs-not-valid-is-this-a-git-repository-313467635.html

希望这可以帮助。

相关内容