必须用SSH协议且确保git命令能成功克隆,Composer不管理密钥只调用git;composer.json中url须为git@bitbucket.org:org/repo.git格式、type为vcs、包名与仓库name字段完全一致,否则静默降级HTTPS导致失败。

能用 SSH 就别碰 HTTPS,否则大概率卡在 Could not fetch 或 Failed to execute git clone;前提是你的 git clone git@bitbucket.org:your-org/your-repo.git 能通——Composer 不管密钥,只调用 git。
SSH 密钥必须本地生效,不是“生成了就行”
Composer 完全不管理 SSH 密钥,它只执行 git clone。所以第一步永远是:确保你本机的 git 命令能走 SSH 拉下这个仓库。
- 运行
ssh -T git@bitbucket.org,输出里要有logged in as xxx,不是Permission denied - 确认公钥(如
~/.ssh/id_rsa.pub)已完整粘贴进 Bitbucket 账户的 Personal settings → SSH keys - 如果私钥有密码,得先
ssh-add ~/.ssh/id_rsa;没密码但ssh-add -l为空,说明 agent 没加载 -
git ls-remote git@bitbucket.org:your-org/your-repo.git应返回一长串 ref,而不是 fatal 错误
composer.json 里 URL 必须是 git@ 格式,且 type 是 vcs
写错 URL 格式会导致 Composer 静默降级到 HTTPS 协议,然后认证失败——它不会报 “SSH failed”,而是报一堆 Git 克隆错误。
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 正确写法:
"url": "git@bitbucket.org:your-org/your-repo.git"(注意是冒号:,不是斜杠/) - 错误写法:
"url": "https://bitbucket.org/your-org/your-repo.git"(HTTPS + SSH 密钥 = 无效组合) - 错误写法:
"url": "git@bitbucket.org/your-org/your-repo.git"(用了/,git 会当成 HTTPS 解析) -
"type"字段必须显式写成"vcs",不能省略、不能写成"package"或"git" - 整个
repositories块要放在composer.json顶层,不是嵌套在require里
require 的包名必须和私有仓库 composer.json 的 name 完全一致
大小写、斜杠方向、vendor 名都错不得。Composer 不会模糊匹配,也不会自动纠正。
- 假设私有仓库根目录
composer.json里写的是:"name": "acme/internal-sdk" - 那么主项目
composer.json的require里就得写:"acme/internal-sdk": "dev-main" - 写成
"ACME/internal-sdk"、"acme/internal_sdk"或"acme/internal-sdk-dev"都会找不到包 - 分支名(如
dev-main)必须真实存在,且不能是 protected branch(Bitbucket 默认保护 main 分支,需手动取消或换分支)
清缓存 + 删 vendor 是最常被跳过的一步
一旦试过错误配置(比如 HTTPS URL + SSH 密钥),Composer 会在 cache 里存下失败的镜像,后续即使改对了也继续失败。
- 先运行
composer clear-cache - 再删掉
vendor/目录(别只删部分子目录) - 最后跑
composer update -vvv,观察日志里是否出现Cloning to cache at git@bitbucket.org:... - 如果还卡在
Cloning into bare repository,说明 SSH 连接没通,不是 Composer 配置问题
最容易被忽略的是:Bitbucket 的 SSH key 设置页面只接受完整公钥(以 ssh-rsa AAAA... 开头),粘贴时漏了末尾换行或多了空格,就会静默失效;还有人把 id_ed25519.pub 当成 id_rsa.pub 提交,而 Bitbucket 对 ed25519 支持不稳定,建议优先用 rsa。

















