必须忽略 vendor 目录,因其是 Composer 动态生成的依赖快照,提交会导致仓库膨胀、Git 历史污染、合并冲突及 CI/CD 重复构建;标准写法为根目录 .gitignore 中添加 /vendor/;例外场景需明确承担离线部署等代价。
应该加,而且必须加。

vendor 是 Composer 根据 composer.json 和 composer.lock 动态生成的依赖快照,不是源码的一部分。提交它会导致:
composer update 都触发大量文件变更,diff 失去可读性vendor 的二进制文件或文件权限差异极易引发合并失败composer.lock 重装依赖,而非复用已提交的 vendor
只需一行,但位置和写法有讲究:
.gitignore 中,而非子目录/vendor/(开头加 / 表示仅忽略根目录下的 vendor),避免误伤同名子目录vendor 或 vendor/(无前导斜杠),否则可能意外忽略路径中任意层级的 vendor
vendor,需先执行:git rm -r --cached vendor,再提交
.gitignore 更新极少数封闭部署场景下可能破例,但需明确承担代价:
composer install(如某些军工/金融内网),且允许将 vendor 当作“二进制分发物”管理 —— 此时必须锁定所有依赖版本,并禁用 composer update
php-pm 或某些 PHAR 构建流程)临时需要预编译 vendor —— 但应放在构建产物目录(如 build/),而非项目根目录 vendor/
vendor;自动化 CI/CD 或 Docker 构建才是正解真正容易被忽略的是:composer.lock 必须提交,且要和 composer.json 版本严格对齐。很多人删了 vendor 却忘了 lock 文件失效,导致不同环境安装出不同版本依赖。