composer无default-branch配置项,其行为取决于包作者的branch-alias设置及用户require时指定的分支名,如dev-main;若依赖包未更新别名,需逐层排查composer show输出并手动修正版本约束。

composer.json 里 default-branch 不起作用?它根本不存在
Composer 没有 default-branch 这个配置项,这是常见误解。你看到的可能是旧文档、错误博客,或是把 GitHub 的 default_branch API 字段混淆进来了。Composer 本身不读取或设置远程仓库的“默认分支”元信息——它只关心你声明的 require 版本约束,以及包的 composer.json 中如何定义版本别名(比如 dev-main 或 dev-master)。
怎么让 Composer 安装时默认拉 main 而不是 master?
关键不在“设置默认分支”,而在两点:一是包作者在 composer.json 里用 branch-alias 声明开发分支别名;二是你自己在 require 时明确写对开发分支名称。如果包没配 branch-alias,Composer 就按字面匹配分支名,dev-master 就只找 master 分支,不会自动 fallback 到 main。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 包作者应在
composer.json的extra下加:"extra": { "branch-alias": { "dev-main": "dev-master" } } - 你自己
require时写"vendor/package": "dev-main",而不是"dev-master" - 如果你控制不了包源码,又想强制走
main,可用repositories覆盖源:"repositories": [ { "type": "vcs", "url": "https://github.com/vendor/package" } ]然后composer require vendor/package:dev-main,前提是该仓库真有main分支且含有效composer.json
composer install 报错 “Could not find package … in a version matching ‘dev-master’” 怎么办?
这通常是因为目标仓库已删掉 master 分支,但你的 composer.json 还锁着 "dev-master",或者依赖的某个包在其 composer.json 里硬编码了 dev-master 作为推荐开发版本。
- 检查报错里的包是否还在用
master:直接打开它的 GitHub/GitLab 页面,看默认分支是不是main - 运行
composer show vendor/package,看输出里versions是否列出了dev-main - 临时改
composer.json,把"dev-master"替成"dev-main",再composer update vendor/package - 如果只是本地开发需要,也可用
composer require vendor/package:dev-main --dev强制指定
为什么 composer create-project 有时自动用了 main,有时还是 master?
它取决于项目模板仓库的 composer.json 里有没有 branch-alias,以及你执行命令时有没有显式指定分支。Composer 本身不查 Git 默认分支,它只解析 composer.json 中的版本映射和你传入的 --stability 或 --repository-url 参数。
- 不指定分支时:
composer create-project vendor/template会安装最新稳定版;若无稳定版,才按稳定性规则选dev-开头的版本,此时优先匹配dev-main(如果存在),否则退到dev-master(如果存在) - 显式指定更可靠:
composer create-project vendor/template --stability=dev --repository-url=https://github.com/vendor/template.git,再配合git clone确认默认分支名 - 注意:
create-project的行为受minimum-stability和prefer-stable影响,这两个配置可能让你“看不见”dev-main,即使它存在
composer.json 就够了,但真正卡住的往往是下游依赖包没同步更新 branch-alias。得一层层 composer show 查过去,而不是只盯着自己写的那行 require。










