go mod代码拉取配置

5,500 阅读2分钟

go mod是golang1.11后新加的特性,利用go mod可以让工程和gopath分开,工程不用非得放在gopath下的src目录下了。go mod有以下命令:

1. 换国内源

由于众所周知的原因,利用go get拉取github开源代码时,经常会遇到无法拉取的问题。可以有两种方式设置国内代理源:

  • 在IDE中(goland)中设置:

  • 在windows下通过设置环境变量的方式(linux类似) 在系统变量中创建GOPROXY,并设置为:goproxy.io

2. go mod拉取gitlab私有仓库设置

  • 在gitlab上创建一个personal_access_tokens,在gitlab中通过Settings->Access Tokens中创建personal_access_tokens.建议在Scopes中选择read_repositoty
  • 在命令行输入:git config --global http.extraheader "PRIVATE-TOKEN: [your private token]"
  • 如果你的gitlab不支持https, 需要再命令行执行: 注意,url.后面的地址是在gitlab中clone with SSH的地址,需要去掉最后的.git, 同样insteadOf的http地址最后也要去掉.git后缀。
  • 然后可以在命令行里执行: 这个时候你的gopath下的pkg/mod下就会拉取到gitlab上的代码。

上面配置git config也可以直接打开.gitconfig文件进行设置:

3. go get使用

  • 下载项目依赖

      go get ./...
    
  • 拉取最新的版本(优先选择tag)

     go get golang.org/x/text@latest
    
  • 拉取master分支的最新commit

     go get golang.org/x/test@master
    
  • 拉取tag为v0.3.2的commit

     go get golang.org/x/test@v0.3.2
    
  • 更新

     go get -u
    

4. go mod基本操作

  • 初始化一个mod,模块名为你的项目名

      go mod init 模块名
    
  • 下载mod到本地cache

      目前所有模块版本数据均缓存在@GOPATH/pkg/mod和@GOPATH/pkg/sum下
      
      go mod download
      
    

5. go mod在IDE中使用

尽管我们在上面配置了gitlab私有仓库,可以通过go get拉取gitlab的代码,但有时候难免会存在在mod文件中已经配置了gitlab私有仓库的地址,可以仍然自动拉取的情况(比如,我的gitlab不支持https请求,只能通过ssh和http,那么即使在mod文件中的require写了gitlab代码地址,可是go mod自动拉取会失败,因为它默认通过https请求)。这时可以通过git clone的方式把gitlab上的代码拉下来,放在@GOPATH/mod文件夹下,然后在mod文件中的replace中把gitlab仓库的地址替换为本地已经拉取的地址,如下所示:

  • 在require中添加:
  • 在replace中添加: