【问题标题】:Can't update single package with go modules无法使用 go 模块更新单个包
【发布时间】:2021-01-01 18:01:58
【问题描述】:

我在根目录中有 2 个带有 go.mod 的项目。 一个是https://github.com/Gohryt/Impossible.go 下一个是 require 在 go.mod 中不可能的东西

我通过重命名一对变量进行了简单的提交。 我的第二个模块需要这个变量,我也在那里重命名了它。 但是我没有找到像go mod update 这样的命令,只有go mod tidy,而且我不能使用新的变量名称。我试过tidy,但什么也没做。在来自互联网的一些指南中,我发现我应该在 go mod 中重命名版本,然后 tidy 应该可以工作,但它的名称类似于v0.0.0-20210101010359-ec9f21b49366,我真的猜不出新名称是什么样的。

是否有任何正常的方式来更新模块,或者我应该在第一次使用后每次都使用旧版本的依赖项?

我尝试使用 latest 命名版本,但 go mod tidy 没有再做任何事情。

【问题讨论】:

  • go get {packageName} 如果没有更新到最新提交 go get {packageName@hash_of_last_commit}

标签: go


【解决方案1】:

如果模块 A 需要模块 B,而您的程序同时需要这两个模块...您需要确保模块 A 需要模块 B 的正确版本。以下是我经常做的一些事情,以使所有内容保持同步.

要升级模块,首先进入仓库...

升级所有模块:

go get -v -u ./...

将某个模块升级到最新提交:

go get -v -u github.com/user/repo@master

将某个模块升级到某个分支:

go get -v -u github.com/user/repo@develop

然后在最后输入:

go mod tidy

将更改提交到您的存储库,并考虑使用新标签。

git commit -v -a

git tag v0.0.2

git push origin branch --tags

然后,回到您的程序存储库.. 并执行相同的步骤,但请确保您导入的模块在运行 -v -u 命令时说出正确的标签。

并确保您的 go.sum,go.mod 文件没有来自旧模块的额外内容。

更多信息在这里https://blog.golang.org/publishing-go-modules

【讨论】:

    【解决方案2】:

    我会做go get -u "{package_name}@{git_commit_hash}"

    例如,go get -u "gopack@1fdd851775f2bc513003d46850c56cb77d8e297b"

    -u 标志是更新已经安装的包。

    【讨论】:

      猜你喜欢
      • 2019-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 2019-04-30
      • 2021-06-01
      相关资源
      最近更新 更多