composer clear-cache 不处理分支缓存,它只清理 files/(zip/tar 包)、repo/(packages.json 快照)和默认跳过的 vcs/(git 裸仓库),而“总是装旧分支”问题源于 vendor/ 中的 git 工作区未更新或配置不当。

composer clear-cache 不处理分支缓存,它只清包归档和元数据
Composer 没有“分支缓存”这个概念——clear-cache 命令压根不识别 dev-master、dev-feature/x 这类开发版分支。它只清理 files/(ZIP/TAR 包)、repo/(packages.json 快照)和默认跳过的 vcs/(Git 克隆副本)。而你看到的“总是装旧分支”,问题不在缓存目录,而在 Composer 本地已解压的 Git 工作区或 vendor 里的源码副本。
真正卡住分支更新的是 vendor/ 下的源码克隆
当你用 --prefer-source 或项目 require 了 "dev-feature/login": "dev-feature/login",Composer 会在 vendor/vendor/name 下直接 git clone 一份仓库,并保留 .git/ 目录。后续 composer update 默认不会 git pull,而是复用已有工作区 —— 即使远程分支已更新,本地仍停在上次 commit。
- 检查是否用了
--prefer-source:看composer.json是否含"config": {"preferred-install": "source"},或命令里显式加了该参数 - 确认 vendor 里是 Git 工作区:进
vendor/some/package,执行git remote -v和git log -1,对比远程最新 commit - 强制刷新:删掉对应目录再重装,
rm -rf vendor/some/package && composer update some/package --no-interaction
想让 dev 分支自动同步?别靠清缓存,改配置
依赖开发版却总手动删 vendor,说明配置没对齐实际协作流程。Composer 提供两个更稳的机制,比反复清缓存靠谱得多:
围绕关键发现、作用机制、临床相关性及研究局限性展开讨论。适用于撰写或优化任何生物医学论文的“讨论(Discussion)”部分——包括结果解读、与既往文献关联、阐释意外发现、界定研究局限性,以及撰写结论。当用户输入以下任一指令时也会自动触发该功能: - “write my discussion” - “help me discuss my findings” - “how do I compare to prior studies” - “write the limitations par
- 启用
minimum-stability: dev+prefer-stable: false,确保composer update主动拉取最新dev-*分支 - 用
composer config --global store-auths false避免因私有仓库认证失效导致 fallback 到旧缓存包 - 对私有 Git 仓库,显式指定
distURL 并加reference(如"dist": {"url": "https://...", "reference": "a1b2c3..."}),绕过本地 Git 状态干扰
临时救急:精准删 vcs/ 里某分支的裸仓库
如果你确定某个私有包的 dev- 分支长期卡在旧 commit,且它被 Composer 缓存为 Git 裸仓库(路径形如 ~/.composer/cache/vcs/https---github.com-some-repo.git/),可以手动清理对应裸库,逼它下次重新 clone:
- 先停所有
composer进程:ps aux | grep composer(Linux/macOS)或tasklist | findstr php(Windows) - 查真实缓存路径:
composer config --global cache-dir - 进
vcs/子目录,找名字匹配仓库域名的文件夹,ls -la看last-modified时间是否异常久远 - 删整个裸库:
rm -rf ~/.composer/cache/vcs/https---github.com-some-repo.git(Linux/macOS)或rd /s /q "%APPDATA%\Composer\Cache\vcs\https---github.com-some-repo.git"(Windows)
注意:这不是常规操作,vcs/ 目录本身就不该频繁变动;真要长期维护 dev 分支,优先走 dist 发布或 CI 自动打 tag,而不是靠清缓存硬推。










