You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub上发布嵌套Go子模块并获取对应版本?

解决Go子包版本与主仓库版本不一致的问题

问题原因

  • 最初ptr目录存在独立go.mod,被Go识别为独立模块,主仓库的v1.0.1标签不会关联到这个子模块,因此go get子模块时只能生成伪版本。
  • 移除子模块的go.mod后,ptr成为主模块的子包,但要让子包版本和主仓库保持一致,需要规范后续的版本发布流程。

解决方案

  1. 维持子包无独立go.mod的状态
    你已经在v1.0.2版本中移除了ptr目录的go.mod,这是正确的做法,此时ptr作为github.com/Siiir/unsafe的子包存在,不再是独立模块。

  2. 规范版本发布流程

    • 每次发布主仓库版本(如v1.0.3、v2.0.0等)时,直接在仓库根目录的目标提交上打vX.Y.Z格式的语义化版本标签。
    • 只要ptr子包的代码变更包含在该提交中,后续通过go get github.com/Siiir/unsafe/ptr@vX.Y.Z就能获取到对应版本的子包,版本号与主仓库完全一致。
  3. 清理本地缓存(若有遗留问题)
    如果之前的伪版本缓存干扰新版本获取,执行以下命令清理模块缓存:

    go clean -modcache
    

    之后重新执行go get github.com/Siiir/unsafe/ptr@v1.0.2即可获取正确版本。

  4. 验证版本一致性
    发布新版本后,用以下命令验证:

    go list -m github.com/Siiir/unsafe@vX.Y.Z
    go list -m github.com/Siiir/unsafe/ptr@vX.Y.Z
    

    两者返回的版本号应完全相同,确认子包与主仓库版本一致。

内容的提问来源于stack exchange,提问作者Siiir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:01:00