go mod 拉取私有倉庫


前言

如果代碼中依賴了本地的包, 這個包是托管在內網 Gitlab 中, 而且不是 HTTPS 服務,那么應該怎樣使用 go mod 拉取代碼呢? 本文會給你我的答案

正文

首先我們要知道, 如果本地的 go 環境中已有某個包, 在使用 go mod vendor 時是不會去再下載的, 會直接將包拷貝到 vendor 中, 因此我們使用 go get xxx 下載私有倉庫的包到本地即可

go get xxxxx

然后我們發現 go get 默認會拉取 https 的包, 但是我們的倉庫又沒有做 https 映射, 也就是會請求 https://xxxxx 時會報錯

connection refused

針對 http 的情況, 盡管 http 不夠安全, 但是 go 官方還是有一個選項

go get --insecure xxxx

此時就會去訪問 http 而不是 https

而我們發現又會報錯

terminal prompts disabled

實際上是因為我們需要拉倉庫的代碼時, 如果倉庫是私有的, 肯定需要身份驗證, 我們知道 go get 實際上是 git 拉取代碼, 所以我們可以使用添加 SSH 的方式, 也可以直接在命令行中輸入帳密, 本次介紹命令行, 而在 go get 時默認是關閉 git 的輸入的, 此時我們需要添加環境變量, 此處我們演示臨時添加一個

export GIT_TERMINAL_PROMPT=1

在執行 go get 就會發現提示輸入帳密, 輸入成功后就可以拉下來

然后我們執行 go mod vendor 會發現沒有問題了, 因為你已經把私有的拉下來了, 執行 vendor 時不會去拉了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM