composer install 报错“git not found”是因为依赖声明为 vcs 类型或含 -dev 版本时需调用 git,但系统未安装或 path 未配置;解决方法包括安装 git 并正确配置环境变量、使用 --prefer-dist 或全局设置 "preferred-install": "dist"。

composer install 报错 git not found
这是 composer 在拉取依赖时,发现包源是 Git 仓库(比如 dev-master 或 v2.0.x-dev),但本地没装 Git 或 PATH 没配对。不是所有包都触发,只在依赖声明为 VCS 类型(type: "vcs")或版本含 -dev 后缀时才需要 Git。
常见错误信息长这样:Failed to clone https://github.com/symfony/console.git via https, ssh protocols, aborting.sh: git: command not found
- 先运行
git --version确认是否真没装——Mac/Linux 用户可能只装了 Xcode 命令行工具但没装完整 Git;Windows 用户常见是装了 GitHub Desktop 却没勾选「Add Git to the system PATH」 - Windows 上推荐直接下载安装官方 Git for Windows,并在安装最后一步务必勾选
Add Git to the system PATH(选「Use Git from Windows Command Prompt」那项) - Mac 用户用 Homebrew 安装后,如果终端报
git not found,大概率是 shell 配置没加载brew的 bin 路径,检查~/.zshrc或~/.bash_profile是否有export PATH="/opt/homebrew/bin:$PATH"(Apple Silicon)或export PATH="/usr/local/bin:$PATH"(Intel)
临时绕过 Git(不推荐长期用)
如果你只是想快速装完依赖跑起来,且确认所有包都有稳定版可用(比如没有强制要求 dev-main),可以用 --prefer-dist 强制走 zip 包而不是 Git 克隆:
composer install --prefer-dist
但注意:
• 它只对已发布 tag 的包生效,遇到 "minimum-stability": "dev" 或 "require": {"monolog/monolog": "dev-main"} 这类写法,依然会失败
• --prefer-dist 不会改变 composer.json 里的版本约束,下次删掉 vendor 还是会卡住
改 packagist 镜像或禁用 VCS 包(进阶控制)
有些公司内网环境根本不能连 GitHub,又不想装 Git,就得从源头避免 composer 尝试走 Git。关键配置在 config 段:
{
"config": {
"secure-http": false,
"disable-tls": true,
"git-bitbucket-oauth": {},
"github-oauth": {},
"preferred-install": "dist",
"sort-packages": true
}
}
重点看这两项:
• "preferred-install": "dist":比命令行 --prefer-dist 更彻底,全局生效
• "secure-http": false 和 "disable-tls": true 仅当镜像站用 HTTP 提供 dist 包时才需要(比如私有 Satis 服务)
更狠一招是直接告诉 composer:别理 Git 仓库,只信 packagist.org 的 dist 包(哪怕它其实是 VCS 类型):
composer config -g repos.packagist composer https://packagist.org
这条命令重置全局 packagist 源为默认 HTTPS 地址,能避开某些自定义源偷偷启用 VCS 行为的问题。
CI/CD 环境里 git not found 的特殊处理
Docker 构建、GitHub Actions、GitLab CI 默认镜像往往不含 Git。这不是漏装,是镜像精简策略。别急着 apt-get install git ——先看是不是真需要:
- PHP 官方
php:8.2-cli镜像确实没 Git,但加一句RUN apt-get update && apt-get install -y git就行(Debian/Ubuntu 基础镜像) - Alpine 镜像要用
apk add --no-cache git - GitHub Actions 的
ubuntu-latest默认带 Git;但self-hostedrunner 若是裸机,得自己确保 Git 可执行 - 最省事的是在
composer install前加判断:command -v git >/dev/null 2>&1 || echo "warning: git missing, using --prefer-dist",再跟上composer install --prefer-dist
真正容易被忽略的点:有些私有包在 composer.json 里写了 "type": "package" + "dist",看似不用 Git,但如果它的 dist.url 是个 GitHub raw 链接(比如 https://raw.githubusercontent.com/xxx/yyy/main/composer.json),composer 内部仍可能 fallback 到 Git —— 这时候光装 Git 不够,还得确保该域名可访问且没被防火墙拦截。










