Golang中修改git仓库地址导致的go get问题如何解决

Golang中修改git仓库地址导致的go get问题如何解决 你好,

我将一个代码仓库从 GitHub 迁移到了 GitLab。在这个过程中,主要的远程仓库从默认的“origin”更改为私有仓库中的一个自定义名称,因此 .git 目录中的配置文件现在部分内容看起来像这样:

[remote "origin"]
	fetch = +refs/heads/*:refs/remotes/origin/*
[remote "RepoSourceName"]
	url = git@gitlab.com:MyName/MyRepo.git
	fetch = +refs/heads/*:refs/remotes/RepoSourceName/*

然而,go get 命令仍在尝试访问已不存在的“origin”,而不是“RepoSourceName”。有没有人知道如何让它访问“RepoSourceName”?

我或许可以将 GitLab 仓库设为 origin 来解决这个问题,但我觉得我也应该学会如何让 go 始终使用我想要的远程“源”,而不是总是默认使用 origin。

我假设一旦解决了这个问题,我就可以在我的代码中全局搜索并替换,将项目的 GitHub URL 更改为它现在所在的 GitLab URL,这样一切就应该能重新工作了。


更多关于Golang中修改git仓库地址导致的go get问题如何解决的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

没关系,我想我明白是怎么回事了。这段代码来自我第一个Go项目,导入语句引用的是GitHub地址,而不是本地包之间相互引用的本地路径。

更多关于Golang中修改git仓库地址导致的go get问题如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在Go模块中,go get命令依赖模块路径(module path)而非git远程仓库名称。你需要更新go.mod文件中的模块路径来匹配新的仓库地址。

首先检查你的go.mod文件,它应该包含类似这样的内容:

module github.com/MyName/MyRepo

将其修改为新的GitLab仓库路径:

module gitlab.com/MyName/MyRepo

然后更新所有import语句。例如,将:

import "github.com/MyName/MyRepo/pkg"

改为:

import "gitlab.com/MyName/MyRepo/pkg"

完成后运行以下命令同步依赖:

go mod tidy

如果你需要保留旧的模块路径但重定向到新仓库,可以在go.mod中使用replace指令:

module github.com/MyName/MyRepo

replace github.com/MyName/MyRepo => gitlab.com/MyName/MyRepo v0.0.0

对于私有仓库,还需要配置git访问权限:

git config --global url."git@gitlab.com:".insteadOf "https://gitlab.com/"

这样配置后,go get会使用SSH协议访问GitLab私有仓库。

回到顶部