【完整教學】如何在 Ubuntu 中使用 Git 與 GitHub:從安裝、設定到實戰操作

目次

1. 前言

為什麼要將 Ubuntu 與 GitHub 結合使用?

近年來,Git 和 GitHub 的應用在軟體開發與系統管理的領域中變得日益普遍。對於使用 Ubuntu 這類 Linux 環境的工程師與程式開發者而言,與 GitHub 的整合已成為日常工作的一部分

Git 是一種用於管理原始碼版本的工具,能有效協助多人協作開發。相對地,GitHub 則是一個可在線上託管 Git 儲存庫的服務平台,讓開發者能夠與全球使用者分享與協作。

為什麼選擇在 Ubuntu 上使用 GitHub?

Ubuntu 是深受開發者喜愛的 Linux 發行版,與開源開發的相容性極佳。它提供了易於安裝 Git 與其他開發工具的環境,使 GitHub 的整合操作變得順暢又高效。

以下是幾個適合搭配 Ubuntu 與 GitHub 使用的常見場景:

  • 在 GitHub 上管理與分享 Python 或 C++ 等程式碼
  • 參與開源專案並做出貢獻(Contribute)
  • 將個人專案成果公開作為作品集

本文將學到的內容

本指南將依照以下步驟,從基礎到進階,深入說明如何在 Ubuntu 上有效利用 GitHub

  • 如何在 Ubuntu 上安裝 Git
  • Git 的基本設定與 SSH 連線方式
  • 在 GitHub 上建立與管理儲存庫
  • 整合 Visual Studio Code 提升開發效率
  • 常見問題與 FAQ 解答

即使是首次使用 GitHub 的讀者也能輕鬆學習,文章會搭配實際指令範例與注意事項進行說明。如果您是 Ubuntu 使用者,並希望充分發揮 GitHub 的潛力,請務必閱讀至最後!

2. 在 Ubuntu 安裝 Git

什麼是 Git?再次理解其重要性

Git 是一種版本控制系統(VCS: Version Control System),專為軟體開發而設計。它可以記錄原始碼的變更歷史,並支援還原至過去的版本,讓多人協作開發變得更順利。

在 Ubuntu 等 Linux 環境中,Git 的安裝非常簡單快捷。透過以下方法,只需幾分鐘即可透過終端機完成安裝。

使用 APT 安裝 Git 的步驟

在 Ubuntu 中,最常見且穩定的 Git 安裝方式是使用 APT(Advanced Package Tool)。請依照以下步驟進行。

1. 更新套件清單

sudo apt update

這個指令會讓系統取得最新的套件資訊。安裝任何套件之前,請務必先執行這個步驟。

2. 安裝 Git

sudo apt install git

當系統詢問「Y/n」時,請輸入 y 並按下 Enter,安裝程序將會開始。

確認 Git 是否安裝成功

安裝完成後,可以透過以下指令確認 Git 是否成功安裝:

git --version

若出現類似以下的訊息,表示安裝成功:

git version 2.34.1

版本號會因為您使用的 Ubuntu 版本或套件更新狀況而有所不同,只要能顯示出版本資訊,就代表安裝完成。

補充:透過 Snap 套件安裝 Git

在 Ubuntu 中也可以透過 snap 指令來安裝 Git,不過APT 是更常見且穩定的方式。若無特殊需求,建議優先使用 APT 來安裝。

3. Git 的初始設定

在使用 Git 前需要進行哪些基本設定?

完成 Git 安裝後,接下來最重要的就是設定使用者資訊與驗證方式。這些設定能確保您與遠端儲存庫的互動順暢,並有助於團隊開發的協調與識別。

設定 Git 使用者名稱與電子郵件

Git 每次提交(commit)時都會記錄「由誰進行了修改」,因此需要預先設定使用者名稱與電子郵件。

設定指令

git config --global user.name "你的名字"
git config --global user.email "you@example.com"

這裡所設定的名稱與信箱不一定要與您的 GitHub 帳號一致,但建議與 GitHub 使用的資訊相同,方便在提交記錄中正確顯示身份。

查看目前設定內容

git config --list

透過這個指令可以檢查目前的 Git 設定清單。

產生 SSH 金鑰並註冊至 GitHub

雖然 GitHub 也支援 HTTPS 連線,但使用 SSH 連線可以免去每次都要輸入密碼,更安全也更有效率。

1. 產生 SSH 金鑰

ssh-keygen -t ed25519 -C "you@example.com"

依照畫面提示按幾次 Enter,就會產生一對金鑰檔案:~/.ssh/id_ed25519(私鑰)與 ~/.ssh/id_ed25519.pub(公鑰)。

2. 啟動 SSH Agent 並加入金鑰

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

這樣就完成金鑰的準備工作。

3. 將公鑰加入 GitHub

首先將公鑰內容複製到剪貼簿:

cat ~/.ssh/id_ed25519.pub

複製顯示出來的完整字串,然後在 GitHub 執行下列步驟:

  1. 登入 GitHub
  2. 點選頭像 →「Settings(設定)」
  3. 左側選單中選擇「SSH and GPG keys」
  4. 點選「New SSH key」,貼上公鑰後儲存

4. 測試 SSH 連線

使用下列指令進行連線測試:

ssh -T git@github.com

第一次會詢問是否信任該主機,請輸入 yes
若成功,將出現類似以下訊息:

Hi your-username! You've successfully authenticated, but GitHub does not provide shell access.

完成設定後的建議操作

當上述設定完成後,您就可以對 GitHub 上的儲存庫進行 clone(複製)、push(推送)、pull(拉取)等操作了。下一個章節將會詳細介紹如何建立並操作 GitHub 儲存庫

4. 操作 GitHub 儲存庫

在 GitHub 上建立新的儲存庫

登入 GitHub 之後,首先要建立一個新的儲存庫。

建立步驟(透過瀏覽器操作)

  1. 點選 GitHub 首頁右上角的「+」圖示,選擇「New repository」
  2. 輸入以下資訊:
  • Repository name(儲存庫名稱):例如 my-first-repo
  • Description(可選):簡短說明
  • Public / Private:選擇是否公開儲存庫
  1. 點選「Create repository」完成建立

建立完成後,畫面會顯示該儲存庫的 URL,可用於 clone 等操作。

複製現有的 GitHub 儲存庫(clone)

要將儲存庫複製到本地(Ubuntu 環境),請使用 git clone 指令:

git clone git@github.com:your-username/my-first-repo.git

※此為使用 SSH 連線的範例。如使用 HTTPS,URL 將有所不同。

執行上述指令後,當前資料夾中會建立一個名為 my-first-repo 的資料夾,並下載儲存庫的所有內容。

檔案修改、暫存(staging)、提交(commit)的流程

1. 新增或編輯檔案

例如,建立一個新的檔案:

echo "# 第一次使用 GitHub" > README.md

2. 將修改加入暫存區

git add README.md

暫存是指:選擇哪些修改要包含在下一次的提交中。

3. 提交修改內容

git commit -m "第一次提交:新增 README.md"

此操作會將變更儲存到本地端的 Git 歷史中。

將變更推送到 GitHub(push)

若要將本地的變更同步到 GitHub 上的遠端儲存庫,請使用 git push

git push origin main

※若預設分支不是 main(如為 master),請將指令中的分支名稱改為正確的名稱。

從 GitHub 拉取變更(pull)

當其他開發者對遠端儲存庫進行了修改,要將這些變更合併到本地儲存庫,可以使用下列指令:

git pull origin main

這樣可將遠端的修改內容整合到目前本地的分支中。

常用補充操作

  • 檢查遠端儲存庫:
git remote -v
  • 新增其他 GitHub 儲存庫:
git remote add origin git@github.com:your-username/another-repo.git
  • 管理 README.md 或 .gitignore 等檔案也可使用相同流程操作。

5. 與 Visual Studio Code 的整合使用

VS Code 是進行 Git 操作的理想編輯器

在 Ubuntu 環境中使用 GitHub 時,搭配 Visual Studio Code(以下簡稱 VS Code) 能大幅提升開發效率。VS Code 是由 Microsoft 開發的開源程式碼編輯器,其與 Git 的整合功能非常強大。使用者可以透過圖形介面輕鬆進行 commit、push、比較差異等操作,是對初學者非常友善的工具。

在 Ubuntu 安裝 VS Code 的方法

在 Ubuntu 中,只需按照下列步驟,即可輕鬆安裝 VS Code。

1. 新增 Microsoft 軟體來源的金鑰

sudo apt update
sudo apt install wget gpg
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg /usr/share/keyrings/

2. 註冊軟體來源資訊

sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/packages.microsoft.gpg] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'

3. 安裝 VS Code

sudo apt update
sudo apt install code

安裝完成後,只需在終端機中輸入 code 即可啟動 VS Code 編輯器。

VS Code 內建 Git 擴充功能

VS Code 在安裝後就已內建與 Git 的整合功能,無需額外安裝外掛也可進行 Git 操作。若想進一步提升功能,推薦以下擴充套件:

  • GitHub Pull Requests and Issues
    → 強化與 GitHub 的整合,可透過 GUI 管理 Pull Request 與 Issue。
  • GitLens
    → 可視化每行程式碼的修改歷史,了解是誰、在什麼時間做了哪些更動。

在 VS Code 上進行基本的 Git 操作

讀取儲存庫

在終端機中進入已 clone 的專案資料夾,執行下列指令:

code .

這樣 VS Code 就會載入該資料夾並開啟專案。

檢查修改與提交(commit)

  • 點選左側欄位的「源碼管理」圖示(類似分支的圖示)
  • 查看修改過的檔案列表
  • 點擊檔案可檢視差異內容
  • 輸入提交訊息,點選「✓」圖示進行提交

推送(push)與拉取(pull)操作

  • 可從側欄「…」選單選擇 Push 或 Pull
  • 也可透過右下角的狀態列直接操作

可同時使用內建終端機操作

VS Code 內建終端機(快捷鍵 Ctrl + `)讓您能夠同時使用圖形介面與指令列。您可以在 GUI 提交變更後,再透過終端機操作分支管理,靈活切換操作方式。

遇到問題時的建議解法

  • 若出現 SSH 連線錯誤,請確認 VS Code 有正確讀取 SSH 金鑰
  • 可能需要重新設定認證資訊,或使用 GitHub 的Personal Access Token(PAT) 進行認證

6. 常見問題排解指南

SSH 連線錯誤:「Permission denied (publickey).」

可能原因

  • SSH 金鑰未正確產生或尚未註冊
  • GitHub 帳戶中未新增公開金鑰
  • SSH Agent 未正確載入金鑰

解決方法

  1. 確認 SSH 公開金鑰是否存在:
ls ~/.ssh/id_ed25519.pub

若不存在,可透過以下指令產生:

ssh-keygen -t ed25519 -C "your_email@example.com"
  1. 啟動 SSH Agent 並加入金鑰:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
  1. 將公開金鑰內容複製並新增到 GitHub:
cat ~/.ssh/id_ed25519.pub

→ 登入 GitHub,前往「SSH and GPG keys」頁面並貼上金鑰內容

  1. 測試連線:
ssh -T git@github.com

HTTPS 連線時的驗證錯誤:要求輸入使用者名稱或密碼

原因

  • GitHub 已停用帳號密碼驗證,改為使用 Token 驗證

解決方法

  1. 前往 GitHub 發行 Personal Access Token:
    https://github.com/settings/tokens
    → 勾選 repo 權限並產生 Token
  2. 進行 Git 驗證時,使用 GitHub 帳號作為使用者名稱,Token 字串作為密碼
  3. 若希望讓 Git 記住這些認證資訊,可啟用憑證快取功能:
git config --global credential.helper cache

錯誤訊息:「fatal: not a git repository」

原因

  • 目前所在的資料夾不是 Git 儲存庫

解決方法

  • 請先移動到已初始化的儲存庫目錄下:
cd ~/your-project-directory
  • 或是初始化一個新的 Git 儲存庫:
git init

發生衝突(Conflict)時的處理

原因

  • 當自己與他人同時修改相同檔案的相同區段時,Git 無法自動合併,會產生衝突

解決方法

  1. 執行 git pull 發生錯誤時,打開相關檔案進行手動合併
  2. 會看到類似以下標記:
<<<<<<< HEAD
你修改的內容
=======
對方修改的內容
>>>>>>> origin/main
  1. 手動選擇保留內容,移除標記並儲存
  2. 之後執行以下指令以完成合併:
git add .
git commit

錯誤訊息:「remote: Repository not found.」

原因

  • 儲存庫的 URL 輸入錯誤
  • 您沒有權限存取該 GitHub 儲存庫

解決方法

  • 使用以下指令檢查目前的遠端 URL:
git remote -v
  • 如果需要修正,可重新設定:
git remote set-url origin git@github.com:your-username/your-repo.git

這些錯誤常發生在初學者剛開始使用 Git/GitHub 時。不過只要了解原因與解法,就能冷靜應對。錯誤是學習的機會,請放心一步一步學會使用 Git!

7. 常見問題(FAQ)

Q1. Git 和 GitHub 有什麼不同?

A:
Git 是一種版本控制工具,可以在本地端管理原始碼的變更記錄;而 GitHub 則是一個線上平台,可用來儲存、管理並分享由 Git 管理的儲存庫。

  • Git:可在本地離線進行版本管理
  • GitHub:可將 Git 的資料儲存在雲端,並與他人協作

Q2. SSH 與 HTTPS 連線方式,我該選哪一個?

A:
通常建議使用SSH 連線,主要原因如下:

  • 不需每次輸入帳號密碼(透過金鑰驗證)
  • 安全性更高,也較適合長期使用

但若公司或網路環境有限制,也可以使用 HTTPS,請依實際情況選擇。

Q3. 如何在 Ubuntu 中切換多個 GitHub 帳號?

A:
您可以為每個帳號產生不同的 SSH 金鑰,並透過 SSH 設定檔來切換。

  1. 為每個帳號建立不同的金鑰
    例如:~/.ssh/id_ed25519_work, ~/.ssh/id_ed25519_personal
  2. 編輯 ~/.ssh/config,加入如下設定:
Host github.com-work
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_work

Host github.com-personal
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_personal
  1. 在專案的 .git/config 或使用 git remote set-url 切換 URL:
git remote set-url origin git@github.com-work:your-work-user/your-repo.git

Q4. 想用圖形介面(GUI)操作 Git,可以嗎?

A:
可以的!使用 Visual Studio Code 就能以圖形方式操作 Git。
您可以視覺化地完成 commit、push、查看差異、切換分支等操作,對新手非常友善。

Q5. 如果刪除了 GitHub 上的遠端儲存庫,本地的會怎樣?

A:
即使刪除了 GitHub 上的儲存庫,您本機的 Git 資料仍會保留。但如果執行 git push,就會出現錯誤訊息。

若要重新連接新的遠端儲存庫,可以執行以下指令:

git remote set-url origin git@github.com:new-user/new-repo.git

Q6. 我不習慣使用終端機,有沒有全圖形介面的操作方式?

A:
您可以使用以下 GUI Git 工具,完全不需使用終端機:

  • GitKraken
  • Sourcetree(不支援 Linux,可嘗試透過 Wine 執行)
  • Visual Studio Code(內建 Git 支援)

對 Ubuntu 使用者來說,VS Code 搭配 GitLens 擴充套件 是最推薦的組合,安裝簡單且使用順手。

Q7. Git 的提交紀錄可以追溯多久?

A:
原則上 Git 會保留從初始化以來的所有提交歷史。可使用以下指令檢視:

git log

如果只想查看特定檔案的歷史,則可使用:

git log path/to/file
侍エンジニア塾