vendor 目录不应提交到 Git,因其是可通过 composer.json 和 composer.lock 重建的构建产物,体积大、更新频繁、含平台相关文件,提交会导致历史臃肿、拉取变慢、Diff 失真及协作冲突。

不应该提交 vendor 目录到 Git。
为什么 vendor 不该进版本库
Composer 的 vendor 目录是依赖包的安装结果,本质属于“构建产物”,不是源代码。它体积大、更新频繁、包含平台相关文件(如扩展的二进制文件),且内容完全可通过 composer.json 和 composer.lock 重建。
-
composer.lock锁定了所有依赖的确切版本和哈希值,保证不同环境安装一致 - 提交
vendor会导致 Git 历史臃肿,拉取 / 克隆变慢,Diff 失去可读性 - 多人协作时容易因本地
vendor差异引发无意义冲突
正确做法:只提交关键文件
Git 仓库中应保留:
-
composer.json:定义项目依赖和脚本 -
composer.lock:必须提交,它是可重现安装的核心依据
同时确保 .gitignore 中已包含 /vendor/(Composer 安装时会自动生成标准规则)。
部署和 CI/CD 中如何处理
在服务器或 CI 流水线中,只需运行:
composer install –no-dev
即可根据 composer.lock 精确还原依赖。生产环境跳过 --no-dev 可能引入非必要包,建议明确指定。
若需离线部署,可用 composer install --no-install 预生成 vendor 并打包,但这属于特殊场景,不改变主干策略。