应忽略 vendor 目录。因其由 Composer 自动生成、体积大、更新频繁且可复现,提交会导致仓库膨胀、跨平台冲突、绕过 lock 校验等问题;只需提交 composer.json 和 composer.lock。

应该被 Git 忽略。vendor 目录是 Composer 自动下载和管理的第三方依赖代码,它不包含项目原创逻辑,也不该进入版本库。
为什么不应该提交 vendor 目录
vendor 目录体积大、更新频繁,且内容完全可复现——只要 composer.json 和 composer.lock 文件存在,就能用 composer install 精确还原相同版本的依赖。
- 提交 vendor 会显著增大仓库体积,拖慢克隆和拉取速度
- 不同环境(如 Windows/macOS/Linux)下某些包可能生成平台相关文件,导致冲突或误判变更
- 手动修改 vendor 中的代码属于反模式,正确做法是打补丁、提 PR 或使用
repositories替换包 - CI/CD 流程通常依赖 clean install,自带 vendor 反而可能绕过 lock 文件校验,引发不一致
正确做法:只提交关键文件
确保以下文件在 Git 中被跟踪:
- composer.json:定义项目依赖和脚本
- composer.lock:锁定所有依赖的确切版本和哈希值,保障可重现性
而 vendor/、composer.phar、vendor-bin/ 等自动生成目录应加入 .gitignore。
特殊情况需谨慎考虑
极少数场景(如离线部署且无法运行 composer)可能临时打包 vendor,但这属于部署策略问题,不是版本管理规范。更可持续的方案是搭建私有 Packagist 或使用 artifact 包(如 tarball + lock 文件),而非把 vendor 塞进 Git。
基本上就这些。忽略 vendor 是 PHP 社区多年验证过的标准实践,不是偷懒,而是让 Git 专注管好“人写的代码”。










