Go語言系列:(2)go get 命令介紹

Go語言的代碼被託管於 Github.com 網站,該網站是基於 Git 代碼管理工具的,不少有名的項目都在該網站託管代碼。其餘相似的託管網站還有 code.google.com、bitbucket.org 等。git

這些網站的項目包路徑都有一個共同的標準,參見下圖所示。github

 

 

go get 命令能夠藉助代碼管理工具經過遠程拉取或更新代碼包及其依賴包,並自動完成編譯和安裝。整個過程就像安裝一個 App 同樣簡單。安全

這個命令能夠動態獲取遠程代碼包,目前支持的有 BitBucket、GitHub、Google Code 和 Launchpad。在使用 go get 命令前,須要安裝與遠程包匹配的代碼管理工具,如 Git、SVN、HG 等,參數中須要提供一個包名。工具


這個命令在內部實際上分紅了兩步操做:第一步是下載源碼包,第二步是執行 go install。下載源碼包的 go 工具會自動根據不一樣的域名調用不一樣的源碼工具,對應關係以下:測試

  • BitBucket (Mercurial Git)
  • GitHub (Git)
  • Google Code Project Hosting (Git, Mercurial, Subversion)
  • Launchpad (Bazaar)

參數介紹: 網站

-u 用於下載指定的路徑包及其依賴包,默認狀況下,不會下載本地已經存在的,只會下載本地不存在的代碼包。就是口中常說的更新包 好比:go get -u github.com/jinzhu/gorm。會把最新的 gorm 包下載到你本地
-d 此命令僅僅是下載路徑包,而不會進行安裝。即不會執行 go install 命令
-t 讓命令程序同時下載並安裝指定的代碼包中的測試源碼文件中依賴的代碼包
-fix 讓命令程序在下載代碼包後先執行修正動做,然後再進行編譯和安裝。好比,個人代碼是用1.7 開發的,如今go 版本已是1.13 了,有些包已經發生了變化,那麼咱們在使用go get命令的時候能夠加入-fix標記。這個標記的做用是在檢出代碼包以後,先對該代碼包中不符合Go語言1.7版本的語言規範的語法進行修正,而後再下載它的依賴包,最後再對它們進行編譯和安裝。
-insecure 容許命令程序使用非安全的scheme(如HTTP)去下載指定的代碼包。若是你用的代碼倉庫(如公司內部的Gitlab)沒有HTTPS支持,能夠添加此標記。請在肯定安全的狀況下使用它。(記得 使用工具 git 時,有個版本就是 http 升級爲了https)
-v 打印出那些下載的代碼包的名字
-f 僅在使用-u標記時纔有效。該標記會讓命令程序忽略掉對已下載代碼包的導入路徑的檢查。若是下載並安裝的代碼包所屬的項目是你從別人那裏Fork過來的,那麼這樣作就尤其重要了
-x 打印出整個過程使用了哪些命令

 

  • go get 下載的包保存在哪裏呢?通常他會保存在這個目錄:$GOPATH/src , 若你有多個GOPATH(工做區),則會保存在第一個工做區中。獲取前,請確保 GOPATH 已經設置。Go 1.8 版本以後,GOPATH 默認在用戶目錄的 go 文件夾下。
  • go get 檢出或更新代碼包以後,它會尋找與本地已安裝Go語言的版本號相對應的標籤(tag)或分支(branch)。好比,本機安裝Go語言的版本是1.x,那麼go get命令會在該代碼包的遠程倉庫中尋找名爲「go1」的標籤或者分支。若是找到指定的標籤或者分支,則將本地代碼包的版本切換到此標籤或者分支。若是沒有找到指定的標籤或者分支,則將本地代碼包的版本切換到主幹的最新版本。
  • go get 更新代碼包,更行代碼包後,所引用此包的其餘代碼塊使用時都會更新。可是就是不會更新vendor(govendor 代碼包管理工具生成的文件夾)目錄中的代碼。
相關文章
相關標籤/搜索