Composer报错“git is not recognized”根本原因是其安装dev分支等VCS包时必须调用系统Git,而Windows默认无Git或未将其加入PATH环境变量。

Composer 报错 git is not recognized as an internal or external command,根本原因不是 Composer 本身有问题,而是它在安装某些包(尤其是开发分支、dev- 版本或未打包的 VCS 包)时,**必须调用系统 Git 命令行工具来克隆仓库**。Windows 默认不自带 Git,且即使装了 Git,也可能没加进 PATH 环境变量。
为什么 Composer 非要用 git?
Composer 默认通过 Packagist 下载 ZIP 包,但遇到以下情况会强制走 Git:
- 依赖声明为
"monolog/monolog": "dev-main"或"dev-develop" - 包的
composer.json中source类型是git(而非zip或dist) - 运行
composer install时启用了--prefer-source - 本地
composer.lock记录的是 source 提交哈希,而非 dist URL
此时 Composer 会执行类似 git clone https://github.com/monolog/monolog.git 的命令 —— 如果系统找不到 git,就直接报那个错误。
检查 Git 是否可用 & PATH 是否生效
别急着重装,先确认问题根源:
- 打开新终端(CMD 或 PowerShell),运行
git --version—— 如果报错,说明 Git 没装或没进 PATH - 运行
where git(Windows)或which git(macOS/Linux)看是否返回路径 - 如果已安装 Git for Windows,但
where git无输出,大概率是安装时没勾选Add Git to the system PATH(默认选项有时被误取消)
注意:修改环境变量后,**必须关闭并重新打开终端**,否则不会生效。
Windows 下正确安装 Git 并接入 Composer
推荐使用官方 Git for Windows 安装器(Git-x.x.x-64-bit.exe),安装时关键三步:
- 在 “Adjusting your PATH environment” 页面,**选中
Git from the command line and also from 3rd-party software**(这是让 Composer 能调用的关键) - 在 “Configuring the line ending conversions” 页面,保持默认
Checkout Windows-style, commit Unix-style line endings - 安装完成后,打开新 CMD,运行
git --version和composer install验证
如果仍失败,手动把 Git 的 bin 目录加进系统 PATH(例如:C:\Program Files\Git\cmd),然后重启终端。
不想装 Git?临时绕过 source 依赖
仅适用于你**不主动需要 dev 分支、也不维护源码**的场景:
- 运行
composer install --prefer-dist强制只用 ZIP 包(dist) - 删掉
composer.lock和vendor/后重试(避免 lock 文件残留 source 记录) - 检查
composer.json,把所有"dev-xxx"替换成稳定版,如"^2.0" - 全局配置禁止 source:
composer config -g --unset repositories.packagist不推荐;更安全的是项目级设"minimum-stability": "stable"
但要注意:某些包(尤其 Laravel 插件、私有包)压根不发布 dist,不装 Git 就根本装不上 —— 这不是 Composer 的 bug,是设计使然。
真正卡住的地方往往不是“怎么装 Git”,而是装完没重启终端、PATH 没生效、或误以为 --prefer-dist 能解决一切。Composer 对 Git 的依赖是明确且不可绕过的,除非你彻底避开 source 场景。










