Composer未更新tcg/voyager包?本地文件与GitHub版本不一致原因
为什么你的Voyager包显示已更新但文件不一致?
这种情况我之前也碰到过,主要是这几个原因导致的,咱们一步步排查:
1. Composer按版本标签拉取,而非分支最新提交
你composer.json里的"tcg/voyager": "^1.0"约束,会让Composer拉取1.x系列中已打标签的最新稳定版本(也就是v1.0.11)。而你看到的12小时前的GitHub提交,大概率是还没被合并到1.0稳定分支,或者维护者还没给这个提交打新的版本标签。
你可以核对下本地composer.lock里的reference值(919fcbb5c9a53d601b4b5eeb983e2a29a488e1cb),去GitHub仓库的提交记录里找这个哈希值,就能确认它是不是v1.0.11标签对应的那个提交——如果是的话,那最新的12小时前的提交确实不在这个版本里。
2. Composer缓存导致旧文件未被替换
有时候Composer会缓存之前下载的包,即使版本标签正确,本地缓存的文件还是旧的。你可以试试:
- 先清除缓存:
composer clear-cache - 再重新更新:
composer update tcg/voyager
3. 本地文件被修改过,Composer跳过覆盖
如果你之前手动修改过MenuItemPolicy.php,Composer在更新时会保留本地修改,不会强制覆盖。可以用Git命令检查下:
git diff vendor/tcg/voyager/src/Policies/MenuItemPolicy.php
如果有本地修改,先备份这个文件,然后执行强制安装来覆盖:
composer install --force
如何获取GitHub最新提交的代码?
如果确实需要那12小时前的最新功能,你得修改composer.json的版本约束,指定拉取开发分支:
- 把
"tcg/voyager": "^1.0"改成"tcg/voyager": "dev-master"(或者对应开发分支,比如1.x-dev,具体要看仓库的分支命名) - 执行更新:
composer update tcg/voyager --no-cache
注意:开发分支的代码可能不稳定,生产环境谨慎使用哦!
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

