如何让Composer识别VCS仓库标签?我的标签未被匹配问题求助
问题原因与解决方案
首先,你的Composer配置写法存在问题——dev-master#0.0.2并不是引用标签的正确方式。Composer会把#后面的内容解析为commit哈希值,而非标签名称,所以它在dev-master分支里找不到哈希为0.0.2的提交,才会抛出“no matching package found”的错误。
下面是两种正确的解决办法:
方法1:直接引用标签版本
既然你已经创建了0.0.2标签,完全可以直接指定这个标签版本,不需要带上分支名。修改devgiants/filesystem-gpio的composer.json配置:
"require": { "php": "^7.0", "devgiants/filesystem-notifications": "0.0.2" }
这样Composer会直接去你配置的VCS仓库里查找0.0.2标签对应的版本,只要标签存在且包名正确,就能正常安装。
方法2:用commit哈希替代标签名(不推荐,除非特殊需求)
如果你确实需要基于dev-master分支引用该标签对应的提交,那要把#后面换成0.0.2标签对应的实际commit哈希值(可以在GitHub仓库的标签页面找到,比如进入0.0.2标签详情页,页面上会显示该标签指向的commit哈希)。比如:
"require": { "php": "^7.0", "devgiants/filesystem-notifications": "dev-master#a1b2c3d" }
这里的a1b2c3d就是实际的commit前缀(完整哈希也行)。
另外还要确认两个细节:
- 确保派生仓库的
composer.json里的name字段确实是devgiants/filesystem-notifications,和你require里的包名完全一致(大小写、拼写都不能错); - 确认
0.0.2标签已经推送到GitHub远程仓库,而不是只在本地创建了标签。
内容的提问来源于stack exchange,提问作者overflaw
相关产品推荐
相关产品推荐

