答案是Composer默认只搜索stable版本,dev-main等开发分支需加-s dev参数才被识别。因dev-前缀非正式版本号,不加该参数则Composer根本不会查询对应分支;私有库还需在repositories中配置vcs源,且分支名须与远程仓库完全一致、大小写敏感。

直接用 composer require vendor/name:dev-branch 就能装,但 90% 的失败都卡在没加 -s dev 或分支名写错。
为什么 composer require vendor/name:dev-main 报 “Could not find package”
Composer 默认只搜 stable 版本,dev-main 这类带 dev- 前缀的不是正式版本号,而是开发分支别名,必须显式允许解析开发版才能命中。
- 不加
-s dev(即--stability=dev),它压根不会去查这个分支是否存在 - 加了
-s dev后,Composer 才会去 Packagist 或你配置的repositories里找对应仓库,并尝试git clone - 注意:
-s dev是本次命令临时生效,不会改你项目composer.json里的minimum-stability
dev-feature/login 这种含斜杠的分支怎么写
斜杠不能直接出现在命令行或 JSON 字符串里,否则会被 shell 当路径分隔符,或被 Composer 解析失败。
- 命令行必须用双引号包裹整个版本字符串:
composer require "vendor/name:dev-feature/login" -s dev - 写进
composer.json的require里也得加引号:"vendor/name": "dev-feature/login" - 别手滑写成
dev-feature-login——那是另一个分支名,和feature/login完全无关
私有仓库或非 Packagist 包怎么装指定分支
Composer 不知道从哪拉代码,光写 vendor/name:dev-main 没用,会直接报 Package not found。
工作流任务拆解与模型编排技能。使用场景:(1) 收到复杂工作任务需要拆解为可执行步骤,(2) 需要为不同步骤选择最合适的模型,(3) 需要跟踪工作流进度和模型使用情况,(4) 长时间任务卡住需要问题诊断和解决方案。
- 必须在项目根
composer.json顶层加repositories块,且type必须是vcs - 示例配置:
{ "repositories": [ { "type": "vcs", "url": "https://gitlab.example.com/group/private-package.git" } ] } - URL 必须是可访问的 Git 地址,且该仓库的
composer.json中name字段要和require里写的完全一致(大小写敏感)
装完发现不是最新 commit,或者反复装到旧版本
这不是网络问题,是 Composer 的缓存和锁定机制在起作用——它把分支映射为当前 HEAD 的 commit hash 并锁进 composer.lock,下次 install 就直接还原,不会重新 fetch。
- 想强制拉最新:
composer update vendor/name,而不是install - 如果连
update都没更新,先删掉vendor/name和composer.lock里对应项,再重试 - 生产环境严禁直接依赖
dev-xxx,务必用dev-xxx#abc1234锁定具体 commit hash
最常被忽略的一点:分支名必须和远程仓库里真实存在的分支**完全一致、区分大小写**。GitHub 新仓库默认是 main,不是 master;写错一个字母或大小写,就进 no matching package 的死循环。










