0

0

composer中如何配置项目的版本控制忽略vendor目录_composer与git集成规范【实战】

尼克

尼克

发布时间:2026-01-24 16:41:24

|

798人浏览过

|

来源于php中文网

原创

vendor 目录不该进 Git,因为它是 Composer 根据 composer.json 和 composer.lock 动态生成的依赖快照,体积大、更新频繁、含平台相关二进制文件,且不同环境生成结果可能不一致,提交会导致无意义 diff、合并冲突和仓库膨胀。

composer中如何配置项目的版本控制忽略vendor目录_composer与git集成规范【实战】

vendor 目录必须被 Git 忽略,且不能手动提交;.composer 是用户级配置,与项目无关,不用管它。

为什么 vendor 不该进 Git

vendor 目录是 Composer 根据 composer.jsoncomposer.lock 动态生成的依赖快照。它体积大、更新频繁、含平台相关二进制(如 ext-xxx 扩展的编译产物),且不同开发者环境可能生成略有差异的文件(比如 Windows vs Linux 的换行或符号链接)。一旦提交,会引发大量无意义 diff、合并冲突和仓库膨胀。

正确做法是只提交 composer.jsoncomposer.lock —— 它们共同定义了可复现的依赖状态。

确保 .gitignore 正确屏蔽 vendor

检查项目根目录下的 .gitignore 文件是否包含以下两行(顺序不重要,但必须存在):

vendor/
composer.lock

注意:composer.lock 通常 应该提交,所以第二行其实是反例 —— 这里故意写错来提醒你别误删。真正要加的是:

Civitai
Civitai

AI艺术分享平台!海量SD资源和开源模型。

下载
  • vendor/(末尾斜杠表示目录,防止忽略同名文件)
  • 可选加 composer.phar(如果你把 Composer 二进制放在项目里)
  • 避免写成 vendor(没斜杠)—— 可能意外忽略 vendor_foo 类文件名
  • 如果已误提交过 vendor/,需先清理 Git 缓存:git rm -r --cached vendor,再提交

Git 集成时的典型操作流程

团队协作中,新成员克隆后必须运行安装命令,而不是期望 vendor 已存在:

  • 克隆后执行:composer install(读取 composer.lock,精确还原依赖)
  • 不要用 composer update,除非你明确要升级依赖并更新 composer.lock
  • CI/CD 流水线中,应在 composer install --no-dev 后再构建,避免 dev-only 包污染生产环境
  • 若 CI 报错 “Package not found”,先确认 composer.lock 是否已提交,以及镜像源是否配置一致(如阿里云镜像需在 ~/.composer/config.json 或项目级 composer.json 中声明)

关于 .composer 目录的常见误解

.composer 是 Composer 的全局用户配置目录(路径类似 ~/.composer/),存放缓存、认证令牌、全局 bin 软链等,它不属于任何项目,也不应出现在项目 Git 里。你看到它,大概率是因为:

  • 误在项目根目录执行了 composer config --global ...(应去掉 --global
  • composer create-project 初始化时,模板脚本错误地把全局配置复制进了项目
  • IDE 或部署脚本自动创建了该目录(比如 PhpStorm 的 Composer 插件)

只要没把它加进 Git,就无需处理;如果已误提交,删掉并加进 .gitignore 即可:

.composer/

记住:项目级配置走 composer.jsonconfig 字段,用户级配置走 ~/.composer/config.json,二者绝不混用。

相关专题

更多
composer是什么插件
composer是什么插件

Composer是一个PHP的依赖管理工具,它可以帮助开发者在PHP项目中管理和安装依赖的库文件。Composer通过一个中央化的存储库来管理所有的依赖库文件,这个存储库包含了各种可用的依赖库的信息和版本信息。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

150

2023.12.25

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

417

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

535

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

311

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

76

2025.09.10

phpstorm怎么导出项目
phpstorm怎么导出项目

phpstorm提供导出项目功能,步骤如下:打开phpstorm项目转到“项目”菜单选择“导出项目”选择导出格式指定导出位置选择导出范围勾选“包括依赖项”框(可选)单击“导出”完成导出。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

362

2024.04.08

phpStorm怎么运行
phpStorm怎么运行

本专题整合了phpstorm运行教程,阅读专题下面的文章了解更多相关内容。

84

2025.09.18

phpstorm开发环境搭建教程
phpstorm开发环境搭建教程

本专题整合了phpstorm开发环境搭建和运行项目教程,阅读专题下面的文章了解更多详细教程。

76

2025.09.18

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

25

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 9.3万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 10.7万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号