必须忽略 vendor 目录。它由 composer.json 和 composer.lock 精确描述,运行 composer install 即可还原一致依赖;提交会导致仓库膨胀、无意义 diff、合并冲突和审计低效;需提交 composer.json 和 composer.lock。

可以,而且强烈建议忽略。vendor 目录是 Composer 自动下载和管理的依赖包,不应该提交到 Git 仓库中。
为什么 vendor 目录要忽略?
它由 composer.json 和 composer.lock 精确描述,团队成员或 CI 环境只需运行 composer install 就能还原完全一致的依赖。提交 vendor 会导致:
- 仓库体积迅速膨胀(尤其含二进制扩展或大库时)
- 频繁的无意义 diff(比如不同系统生成的符号链接、文件权限差异)
- 合并冲突风险高(多人同时更新依赖后 push vendor 容易冲突)
- 安全扫描和审计变得低效(大量第三方代码混在项目历史中)
标准 .gitignore 配置(推荐直接使用)
在项目根目录的 .gitignore 文件中添加这一行即可:
vendor/
注意末尾的斜杠表示只忽略 vendor 目录及其全部内容,不匹配同名文件。确保它没有被其他规则意外覆盖(比如前面有 !vendor/)。
需要保留什么?
必须提交以下两个文件,它们是还原 vendor 的唯一依据:
-
composer.json:声明项目所需依赖及版本约束 -
composer.lock:锁定每项依赖的确切版本、哈希值和安装顺序(保证可重现性)
CI 流程或新成员初始化项目时,执行 composer install(不是 require)会严格按 lock 文件安装,确保环境一致。
例外情况(极少需要)
只有极特殊场景才考虑部分提交 vendor,例如:
- 你 fork 并深度修改了某个依赖,并把它当作项目一部分长期维护(此时应移出 vendor,改用 path repository 或子模块)
- 离线部署环境完全无法运行 composer(应优先解决网络或构建流程问题,而非妥协提交 vendor)
基本上就这些。忽略 vendor 是 PHP 项目的标准实践,既轻量又可靠。










