迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Go >

如何修复Go Mod Unknown Revision

作者:迹忆客 最近更新:2023/01/15 浏览次数:

在介绍 Go mod 之后,我们可能已经使用过 Go 模块和私有存储库。 在处理使用新的 Go 模块包管理和版本控制系统的 Go 项目并专门使用公共包时,我们通常不会遇到任何重大问题。

但是,当尝试将 Go 包导入私有存储库时,我们可能会在运行 Go buildGo modules 命令时遇到问题。 我们可能会看到如下问题:

$ go build
go: github.com/acme-corporation/internal-rpc-client@v0.1.5: unknown revision v0.1.5

如果你遇到过类似的错误,那么你并不孤单。 这意味着 Go 模块无法正确访问私有包。


访问私有仓库时如何解决Go mod unknown revision

1. 确保你已经设置了 GO111MODULE

确保你正确使用 Go 模块,这会告诉 Go 使用 Go 模块,以防你运行的是旧版本或 Go,或者错误地禁用了 Go 模块。 这是运行后续步骤所必需的。关于这个问题可以参考我们的 go语言:环境变量GOPROXY和GO111MODULE设置 文章

$ go env -w GO111MODULE=on

2. 将你的组织私有仓库添加到 GOPRIVATE

Go 团队正确地考虑了在使用 Go mod 时使用私有包的可能性,并创建了一个帮助工具来描述这种情况

go help module-private

The go command defaults to downloading modules from the public 
Go module mirror at proxy.golang.org. It also defaults 
to validating downloaded modules,regardless of source, 
against the public Go checksum database at sum.golang.org.

These defaults work well for publicly available source code.

The GOPRIVATE environment variable controls which modules
the go command considers to be private (not available publicly) 
and should therefore not use the proxy or checksum database. 
The variable is a comma-separated list of glob patterns 
(in the syntax of Go's path.Match) of module path prefixes.

For example,

GOPRIVATE=*.corp.example.com,rsc.io/private

因此,下一步应该如下所示,使用 GOPRIVATE 环境变量将我们的私有存储库设置为“private

$ go env -w GOPRIVATE=github.com/acme-corporation/internal-rpc-client

3. 确保您的 git 配置适用于私有存储库

Go mod 在后台使用 git 来检索远程包信息。 因此,你应该通过更新 git 配置来告诉 git 如何访问私有包

$ git config --global url."ssh://git@github.com:acme-corporation".insteadOf "https://github.com/acme-corporation"

这将允许我们的 git 客户端和 Go mod 使用我们的 ssh 密钥访问 github 并进行身份验证并访问私有存储库

4. 如果使用 2FA,请确保创建个人访问令牌

在 github 中,特别是如果你为你的组织使用 2FA,在这种情况下使用你的 ssh 密钥将不起作用,你将不得不创建一个个人访问令牌并使用它来访问你的私有存储库

$ git config --global url."https://:x-oauth-basic@github.com:acme-corporation".insteadOf "https://github.com/acme-corporation"

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Golang 中的零值 Nil

发布时间:2023/04/27 浏览次数:166 分类:Go

本篇文章介绍 nil 在 Golang 中的含义,nil 是 Go 编程语言中的零值,是众所周知且重要的预定义标识符。

Golang 中的 Lambda 表达式

发布时间:2023/04/27 浏览次数:93 分类:Go

本篇文章介绍如何在 Golang 中创建 lambda 表达式。Lambda 表达式似乎不存在于 Golang 中。 函数文字、lambda 函数或闭包是匿名函数的另一个名称。

在 Go 中使用断言

发布时间:2023/04/27 浏览次数:181 分类:Go

本篇文章介绍了 assert 在 GoLang 中的使用。在 Go 语言中使用断言:GoLang 不提供对断言的任何内置支持,但我们可以使用来自 Testify API 的广泛使用的第三方包断言。

Go 中的随机数生成

发布时间:2023/04/27 浏览次数:114 分类:Go

本篇文章介绍如何在 Go 语言中使用随机数生成功能。Go 中的随机数生成 Go 语言为随机数生成功能提供内置支持。 内置包 math 有方法 rand(),用于随机数生成。

GoLang 电子邮件验证器

发布时间:2023/04/27 浏览次数:195 分类:Go

本篇文章介绍如何在 Go 语言中验证电子邮件。电子邮件需要特定格式; 否则,它们将无法工作。

卸载 GoLang

发布时间:2023/04/27 浏览次数:183 分类:Go

本篇文章介绍如何在不同的操作系统上卸载 GoLang。卸载 Go 语言 只需几个简单的步骤即可卸载 GoLang。 这些步骤对于不同的操作系统是不同的。

在 Go 中使用 Electron API 创建 GUI

发布时间:2023/04/27 浏览次数:124 分类:Go

本篇文章介绍如何在 Go 语言中使用 Electron API 创建 GUI。Electron API 或 Astilectron 用于为 GoLang 创建 GUI。

在 GoLang 中安装包

发布时间:2023/04/27 浏览次数:122 分类:Go

使用 Go 语言的 get 命令安装所需的包非常容易。 Go 语言提供了多种命令来执行某些任务,get 就是其中之一。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便