git: 'remote-http' 不是一个 git 命令错误(已解决)

问题

Git 报错信息是:

git: 'remote-http' 不是一个 git 命令。参见 'git --help'。
致命错误:remote helper 'http' aborted session

这个错误通常是因为 Git 的 httphttps 协议支持模块缺失,即 Git 在尝试通过 HTTP 协议拉取仓库时,找不到对应的git-remote-http

git clone by http auth

基于http协议用户密码clone,git老板支持git-remote-http

git clone --depth 1 -b test --single-branch http://xxx:yyy@zzz.git

分析

执行以下命令查看是否有 git-remote-http

1
git --exec-path

输出例如:

/usr/lib/git-core

然后查看是否存在 remote helper:

1
ls /usr/lib/git-core/git-remote-http

如果存在该文件,则可以正常克隆 HTTP 仓库:

1
git clone http://xxxx.git

注意:不存在则降级git版本,新版本已不支持 git 1.8支持

ubuntu-22.04 LTS也是默认git支持的

root@dev:~# apt info git
Package: git
Version: 1:2.34.1-1ubuntu1.15
Priority: optional


root@dev:~# 
root@dev:~# git --exec-path
/usr/lib/git-core
root@dev:~# ls /usr/lib/git-core/git-remote-http
/usr/lib/git-core/git-remote-http
root@dev:~# git --version
git version 2.34.1

解决

m1: 降级git

yum info git
yum install -y git

m2:使用 SSH 而不是 HTTP

如果你有权限访问该仓库的 SSH 地址,建议使用 SSH 克隆:

1
git clone git@yourdomain.com:user/repo.git