Composer 安装私有 Git 包需在 composer.json 中配置 type 为 "vcs" 且含正确 URL(如 git@gitlab.example.com:group/project.git),私有包 composer.json 必须有合法 name 和 version(如 "dev-main"),HTTPS 需配 auth.json,SSH 需本地密钥可用,require 时建议用 dev-main#commit 或 dev-main as 1.0.0 并配合 composer update --with-dependencies。

Composer 从私有 Git 仓库安装包,必须配置 repositories
Composer 默认只认 Packagist,私有仓库不加配置直接 composer require vendor/name 肯定报错:Could not find package vendor/name at any version。核心动作是手动在 composer.json 里声明仓库来源。
常见错误是只写 "type": "vcs" 却漏掉 "url",或者 URL 写成网页地址(如 https://gitlab.example.com/group/project)而非 Git 克隆地址(git@gitlab.example.com:group/project.git 或 https://gitlab.example.com/group/project.git)。
-
"type"必须是"vcs",不是"package"或"path" -
"url"必须指向可被git clone的地址,支持git@、https://、ssh:// - 如果仓库用 SSH,本地需已配置好对应密钥,且能手动
git clone成功——Composer 不会提示密钥问题,只会卡住或报超时
私有包的 composer.json 必须有合法 name 和 version 字段
即使你只是想装一个内部工具库,它的 composer.json 也得满足最低要求:有 "name"(格式为 vendor/name,不能含下划线或大写字母),以及至少一个可用的 "version"(如 "dev-main"、"1.0.0" 或带 dev- 前缀的分支名)。否则 Composer 找不到匹配版本。
典型翻车点:开发中临时改了 name 但没同步更新依赖方的 require;或只写了 "version": "dev-foo",却在 require 里写 "vendor/name": "^1.0"——根本对不上。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 分支名作为版本时,必须用
dev-前缀,例如分支release/2.1对应版本号"dev-release/2.1" - 标签打完后,Composer 默认能识别
v1.2.3、1.2.3,但不识别my-v1.2.3 - 如果不想打标签,又想稳定引用某次提交,可用
"dev-main#abcd123"语法(需 Composer 2.2+)
认证问题:HTTPS 私仓要配 auth.json,SSH 私仓要通 git
HTTPS 方式拉取私有仓库时,Composer 会读取项目根目录或全局 ~/.composer/auth.json 中的凭据。不配就会 401;配错格式(比如多了一层 http-basic 包裹)也会静默失败。
SSH 方式看似省事,但实际更易出问题:Composer 底层调的是系统 git 命令,所以它完全依赖你本机的 SSH 配置。哪怕 ssh -T git@gitlab.example.com 能通,Composer 仍可能因未指定 Host 别名、或未启用 ForwardAgent 而失败。
-
auth.json格式必须是:{"http-basic": {"gitlab.example.com": {"username": "xxx", "password": "yyy"}} - GitLab/GitHub 的 personal access token 可当
password用,但 GitHub 已弃用密码登录,必须用 token - SSH 地址推荐显式写成
git@gitlab.example.com:group/project.git,避免 Composer 自动转成 HTTPS
composer require 时指定分支或提交,别信自动解析
很多人以为写 composer require vendor/name:dev-main 就能装 main 分支,结果还是装了 Packagist 上的老版本。这是因为 Composer 优先走缓存和已知元数据,不一定实时查你的 VCS 仓库。
真正可靠的做法是加 --with-dependencies 并强制刷新:先删 composer.lock(或至少删掉该包记录),再运行 composer update vendor/name --with-dependencies。如果还卡住,就加 -vvv 看它到底连了哪个 URL。
- 临时装某个提交:
composer require vendor/name:dev-main#abc123 - 想锁定某次提交又怕分支变动,用
"dev-main as 1.0.0"在require里做版本别名 - CI 环境记得设
COMPOSER_AUTH环境变量传入auth.json内容,而不是靠文件挂载
Could not fetch 可能是网络、权限、URL 拼错、SSH 配置失效、甚至 Git 服务器返回了非标准 HTTP 状态码。动手前,先确保你能用相同协议、相同凭据、在相同环境里手动 git clone 成功。

















