Composer 报 Git not found 是因安装 vcs 类型包时需调用系统 git 命令,若 PATH 中无 git 则失败;常见于自定义 repositories、--prefer-source 或 dist 不可用时。

Composer 报错 Git not found,不是 Composer 本身的问题,而是它在安装含 Git 仓库源(如 vcs 类型包)时,必须调用系统级 git 命令 —— 如果命令不可用,就直接失败。
为什么 Composer 会报 Git not found
Composer 默认对 packagist.org 上的包走 ZIP 下载,但遇到以下情况就会强制走 Git:
- 包的
composer.json中repositories指向了type: "vcs"的 GitHub/GitLab 地址 - 你手动运行了
composer install --prefer-source或设置了COMPOSER_PREFER_SOURCE=1 - 包的
dist包不可用(如私有包没配 dist 镜像),或校验失败后 fallback 到 source
此时 Composer 会执行类似 git clone https://github.com/xxx/yyy.git 的命令 —— 若系统 PATH 里没有 git,就抛出 Git not found。
检查并确认系统是否真有 Git 可用
别只看有没有装 Git 图形界面,Composer 只认命令行 git。在终端执行:
git --version
如果报 command not found 或 bash: git: command not found,说明没装或没进 PATH。常见坑:
- Windows 装了 Git for Windows,但安装时没勾选
Add Git to the system PATH(默认是 “Only use Git from Git Bash”) - macOS 用 Xcode Command Line Tools 自带的
git,但 Xcode 未安装或未运行过xcode-select --install - Linux(如 Ubuntu)只装了
git-core包,但实际需要git元包(apt install git才对)
让 Composer 找到 Git 的三种可靠方式
优先级从高到低,按需选择:
- 把
git所在目录加进系统 PATH(最彻底):比如 Windows 的C:\Program Files\Git\cmd,macOS 的/usr/local/bin(Homebrew Git)或/opt/homebrew/bin(Apple Silicon) - 在 Composer 配置里硬编码路径:
composer config -g git.dir "/usr/local/bin/git"(注意值是完整可执行文件路径,不是目录) - 临时指定(适合 CI 或单次调试):
GIT_EXECUTABLE=/opt/homebrew/bin/git composer install
验证是否生效:运行 composer diagnose,看到 Git binary found at ... 行才算成功。
不想依赖 Git?绕过它的实用条件
不是所有场景都非用 Git 不可。如果你只是想装公开 Packagist 包,且不涉及 private repo、dev 分支或 --prefer-source:
- 确保
composer.json没写自定义repositories(尤其 type=vcs) - 删掉
vendor/和composer.lock,再跑composer install --no-plugins --no-scripts看是否还报错 - 检查
composer config --list输出里是否有preferred-install设为source,有的话改回dist:composer config -g preferred-install "*:dist"
一旦锁文件里记录的是 dist 方式安装的包,后续 composer install 就不会碰 Git —— 即使系统没装 Git 也能过。
真正卡住的地方往往不是“怎么装 Git”,而是没意识到 Composer 在什么条件下才会触发 Git 调用;很多人修了半天 PATH,结果发现只是自己加了一行 "type": "vcs" 的仓库配置而已。










