git - go build 不起作用,因为 git 在 Linux 上被对等方重置了致命的读取错误连接

标签 git go ubuntu gitlab

我在 Ubuntu 上尝试使用 go 编译内部工具时遇到一个奇怪的错误。我因公司敏感而改名

$ go build -o internal-tool .
go: gitlab.com/<company>/platform/<tool-sdk>@v0.0.0-<version-number>: invalid version: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /home/<myhomefolder>/go/pkg/mod/cache/vcs/<unique-hash>: exit status 128:
    fatal: read error: Connection reset by peer
我为我尝试过的每台计算机添加了 gitlab 的 SSH key ,我可以手动 git clone 这个工具-sdk,它克隆得很好。
如果我跑了go build -o internal-tool .在 Windows 上,它非常有说服力。当它尝试 git fetch 这个项目时,它会显示附加的 UI 对话框
GitLab login screen
我有 2FA 设置,所以密码不起作用,并且由于某种原因,浏览器从未工作过,它从未使用 gitlab 登录加载浏览器窗口。但是访问 token 确实有效,因此我能够在 Windows 上执行此操作。
看起来我的 go 或我的 go 在 Linux 上使用的 git 无法加载此对话框,或者它没有用于登录 Gitlab 的模拟。我有同事没有遇到这个问题。此外,如果它有任何用处,我在 Ubuntu 上通过 apt 安装和在 Ubuntu 上使用 snap 安装(在两台不同的机器上)都看到了这一点。当我在 VSCode 中打开这个项目时,它也会传递上述错误,所以这并不奇怪。
关于在这里做什么的任何建议?是否有一些 git 或 gitlab 设置我必须做具体的去?还是需要安装不同的 go?

最佳答案

要求输入密码或 token 的提示意味着您的项目的依赖项之一需要 Go 使用 HTTPS URL(不是 SSH URL)克隆它
对话框本身来自GCM (Git Credential Manager)其中包括在其v2.0.692支持 GitLab 存储库,adding GUI prompts for GitLab authentication .
并不是说您可以确保看不到任何带有 export GCM_INTERACTIVE=false 的 pop 窗口。在执行 go build 的 shell 中,确保构建失败并显示错误消息而不是 pop 窗口。
在您的情况下,请尝试:

git config --global url.ssh://git@gitlab.com/.insteadOf https://gitlab.com/
这将尝试使用 SSH URL。

关于git - go build 不起作用,因为 git 在 Linux 上被对等方重置了致命的读取错误连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72093194/

相关文章:

当我推送到 Git 存储库时,Gitolite 开始给我错误,错误大约为 "declined hooks"

git - 将 PowerShell 脚本作为 git hooks 运行

git - 如何使用 Git merge 工具解决 react-native-git-upgrade 冲突?

linux - 异步获取 "slow protocols"的目录条目

go - 如何在 Gin 中使用 go-bindata?

function - 如何定义返回 map 的函数

node.js - 了解 `nvm ls` 的输出。一切都安装正确了吗?

linux - 如何在ubuntu中查看系统日志?

git - 如何只忽略一个没有扩展名的文件?

外部无法访问mysql