如何让Composer在更新包时保留.git目录?(--prefer-source)
发布时间 - 2025-12-31 00:00:00 点击率:次Composer 默认用 dist 方式安装包(无 .git),启用 --prefer-source 可强制 git clone 保留完整仓库;支持与否取决于包是否在 composer.json 中声明 source 信息。
默认情况下,Composer 安装或更新包时会使用 dist(压缩包)方式,即下载 ZIP/TAR 归档并解压,这种模式下不会包含 .git 目录。若你希望在 vendor/ 中的包保留完整的 Git 仓库(含 .git/ 子目录),以便查看提交历史、切换分支、打补丁或参与开发,需强制 Composer 使用 source 方式 —— 即通过 git clone 拉取代码。
启用 --prefer-source 全局或单次生效
该选项告诉 Composer 优先从源码仓库(如 GitHub)克隆,而非下载发行版归档。
- 单次更新时加上参数:
composer update --prefer-source - 全局设置(永久生效):
composer config --global prefer-source true - 仅对某项目启用(推荐):
composer config prefer-source true(写入当前项目的composer.json的config段)
确认是否已成功拉取 source
执行后进入 vendor/monolog/monolog(以 monolog 为例)目录,运行:
ls -a | grep git
若输出 .git,说明已克隆为完整仓库;若无,则可能是包本身未配置 source 信息,或被缓存干扰。
注意:不是所有包都支持 source 模式
Composer 能否走 source 取决于包的 composer.json 是否声明了 source 类型仓库(如 "type": "git" 和有效 "url")。部分私有包或老旧包可能只提供 dist,此时 --prefer-source 会被忽略。
- 可手动检查包的元数据:
composer show monolog/monolog --all,关注source字段是否存在且非空 - 若缺失,可尝试在
repositories中显式添加 Git 仓库地址(适用于 fork 或私有库)
避免意外覆盖已有 .git 目录
如果之前用 dist 方式安装过某个包,再执行 --prefer-source 更新时,Composer 默认会先清空原目录再重新 clone —— 这会导致你手动添加的 .git 修改丢失。安全做法是:
- 先删掉对应
vendor/xxx/xxx目录(或整个vendor),再运行composer install --prefer-source - 或使用
composer update --prefer-source --no-scripts --no-plugins减少干扰
# js
# git
# json
# composer
# github
# 解压
# 已有
# 适用于
# 为例
# 而非
# 则可
# 只提供
# 压缩包
# 这会
# 若无
# 会先
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
千库网官网入口推荐 千库网设计创意平台入口
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
原生JS获取元素集合的子元素宽度实例
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
如何在IIS服务器上快速部署高效网站?
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
如何在 React 中条件性地遍历数组并渲染元素
Bootstrap整体框架之JavaScript插件架构
如何为不同团队 ID 动态生成多个“认领值班”按钮
网站页面设计需要考虑到这些问题
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
如何用好域名打造高点击率的自主建站?
b2c电商网站制作流程,b2c水平综合的电商平台?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何快速辨别茅台真假?关键步骤解析
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
网站制作免费,什么网站能看正片电影?
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
如何用IIS7快速搭建并优化网站站点?
如何用狗爹虚拟主机快速搭建网站?
如何在企业微信快速生成手机电脑官网?
如何打造高效商业网站?建站目的决定转化率
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
Laravel如何自定义错误页面(404, 500)?(代码示例)
高端建站三要素:定制模板、企业官网与响应式设计优化
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
Laravel如何自定义分页视图?(Pagination示例)
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
Python面向对象测试方法_mock解析【教程】
EditPlus中的正则表达式实战(6)
java ZXing生成二维码及条码实例分享
如何快速启动建站代理加盟业务?
Swift中swift中的switch 语句
如何基于云服务器快速搭建网站及云盘系统?
详解vue.js组件化开发实践
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
Laravel集合Collection怎么用_Laravel集合常用函数详解
如何快速上传自定义模板至建站之星?
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
网站制作软件免费下载安装,有哪些免费下载的软件网站?
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
香港服务器部署网站为何提示未备案?
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性


t),启用 --prefer-source 可强制 git clone 保留完整仓库;支持与否取决于包是否在 composer.json 中声明 source 信息。