在 Ubuntu 安裝 Git 並從 GitLab Clone Repository

Git 是目前最常見的版本控制工具,無論是個人專案、團隊協作,或是 CI/CD 流程,幾乎都會透過 Git 來管理程式碼版本。若團隊使用 GitLab 作為 Git repository 平台,開發者除了要先在本機安裝 Git,也需要準備好 GitLab 的存取權限,才能順利 clone 專案。

本文會示範如何在 Ubuntu 環境安裝 Git,並使用 GitLab 的 Personal Access Token 透過 HTTPS clone repository。範例會以 https://inner.gitlab.dev/pcion123/docker-test.git 作為 repository URL,實際操作時請替換成自己的 GitLab 網址、帳號與專案路徑。

前置需求

開始前,請先確認已具備以下條件:

  • 一台可以使用終端機操作的 Ubuntu 主機
  • 具備 sudo 權限的使用者帳號
  • 可以連線到 GitLab 服務的網路環境
  • 已經擁有 GitLab 帳號,且有目標 repository 的讀取權限

如果 GitLab 是公司內部或實驗環境自架的服務,也要先確認主機能解析 GitLab 的網域名稱。例如本文範例使用 inner.gitlab.dev,因此 Ubuntu 主機必須能正確連到這個位址。


安裝 Git

Ubuntu 可以直接透過 APT 套件管理工具安裝 Git。先更新套件索引:

1
sudo apt update

接著安裝 Git:

1
sudo apt install -y git

安裝完成後,可以使用以下指令確認版本:

1
git version

只要終端機能顯示 Git 版本,就代表 Git 已經可以正常使用。圖中的版本是 git version 2.53.0,實際版本會依照 Ubuntu 版本與套件來源而不同。

設定 Git 使用者資訊

第一次使用 Git 前,建議先設定 commit 會使用的名稱與 Email。這些資訊會寫入 Git commit 紀錄,方便團隊在 GitLab 上追蹤每次變更是由誰提交。

設定使用者名稱:

1
git config --global user.name "你的名稱"

設定 Email:

1
git config --global user.email "you@example.com"

設定完成後,可以用以下指令檢查目前的全域設定:

1
git config --global --list

這裡的 Email 建議使用 GitLab 帳號綁定的 Email,後續在 GitLab 上查看 commit 時會比較容易對應到正確使用者。

進入 GitLab Personal Access Tokens 頁面

如果要使用 HTTPS clone 私有 repository,GitLab 通常不建議直接使用帳號密碼,而是使用 Personal Access Token 作為密碼。這樣可以針對 token 設定期限與權限範圍,也能在外洩或不再使用時單獨撤銷。

登入 GitLab 後,點選右上角的使用者頭像,開啟選單後進入 Preferences

進入 Preferences 後,在左側選單找到 Access,再選擇 Personal access tokens

在 Personal access tokens 頁面中,點選 Generate token。如果畫面中提供 Fine-grained tokenLegacy token,可以依照 GitLab 版本與團隊政策選擇適合的 token 類型。本文範例使用 Legacy token 示範。

建立 Personal Access Token

建立 token 時,需要填寫 token 名稱、描述與到期日,並選擇需要的權限範圍。若只是要 clone repository,通常至少需要 repository 讀取權限;如果之後也要 push 程式碼,則需要寫入 repository 的權限。

範例畫面中填入 token 名稱 docker-test,並勾選以下 scopes:

  • read_repository
  • write_repository
  • api

設定完成後,點選 Generate token 建立 token。

GitLab 產生 token 後,畫面只會顯示一次。請立刻複製並妥善保存,離開頁面後通常無法再次查看完整 token。

Personal Access Token 等同於可以存取 GitLab repository 的密碼,請不要貼在文件、聊天室、Issue、程式碼或公開截圖中。如果 token 不慎外洩,應立即到 GitLab 撤銷該 token,並重新產生新的 token。

使用 HTTPS Clone GitLab Repository

取得 token 後,就可以回到 Ubuntu 終端機 clone repository。先複製 GitLab 專案頁面提供的 HTTPS clone URL,接著執行:

1
git clone https://inner.gitlab.dev/pcion123/docker-test.git

執行後,Git 會要求輸入 GitLab 使用者名稱與密碼。使用者名稱輸入 GitLab 帳號,例如:

1
Username for 'https://inner.gitlab.dev': pcion123

密碼欄位請貼上剛剛建立的 Personal Access Token,而不是 GitLab 帳號密碼。終端機通常不會顯示貼上的 token,這是正常現象。

看到 Receiving objectsResolving deltas 都完成後,就代表 repository 已成功下載到本機。

檢查 Clone 結果

clone 完成後,可以使用 ls 確認目前目錄中多了一個專案資料夾:

1
ls

接著進入專案資料夾:

1
cd docker-test/

再列出專案內容:

1
ls

如果可以看到 repository 裡的檔案,例如 README.mdpom.xmlsrc 等內容,就代表 clone 成功,可以開始進行後續開發。

儲存 HTTPS 認證資訊

如果不想每次執行 git pullgit push 都重新輸入帳號與 token,可以設定 Git credential helper。最簡單的方式是使用 store

1
git config --global credential.helper store

設定後,下一次使用 HTTPS 存取 GitLab 並完成登入時,Git 會把認證資訊儲存在本機使用者目錄下的憑證檔中。之後再次操作同一個 GitLab 網址時,就不需要重複輸入。

需要注意的是,credential.helper store 會以明文形式儲存憑證,因此比較適合個人測試機、實驗環境或受控的開發機。如果是在共用主機或安全要求較高的環境,建議改用系統提供的安全憑證管理工具,或改採 SSH key 方式連線。

常見問題

clone 時出現 Authentication failed

如果 clone 時出現認證失敗,通常可以檢查以下幾點:

  • GitLab 使用者名稱是否輸入正確
  • 密碼欄位是否貼上 Personal Access Token,而不是 GitLab 帳號密碼
  • token 是否已過期或被撤銷
  • token 是否具備 read_repository 權限
  • 使用者是否有該 repository 的存取權限

找不到 GitLab 網址

如果終端機無法連到 GitLab,例如出現 DNS 解析失敗或連線逾時,請先確認 Ubuntu 主機能否連線到 GitLab:

1
ping inner.gitlab.dev

若 GitLab 是內部服務,可能需要檢查 DNS、VPN、防火牆或 /etc/hosts 設定。

不想使用 HTTPS token

GitLab 也支援透過 SSH key clone repository。SSH 的好處是不用每次輸入 token,也不需要把 Personal Access Token 存在本機 Git credential 中。不過第一次使用前,需要先產生 SSH key,並把 public key 加到 GitLab 帳號中。

小結

本文完成了 Ubuntu 安裝 Git、設定 Git 使用者資訊、建立 GitLab Personal Access Token,以及使用 HTTPS clone GitLab repository 的基本流程。對剛開始使用 GitLab 的環境來說,HTTPS 搭配 Personal Access Token 是很直覺的入門方式;等流程熟悉後,再依照團隊安全政策選擇是否改用 SSH key 或更細緻的 token 權限設定。