讀完本文,您會了解 Git 是什麼、為什麼需要它,建立自己的第一個 GitHub 儲存庫,並設定工作環境。我們刻意透過 IDE 的圖形介面介紹 Git:畫面比較直觀,剛開始也比較安心,不必記住一大堆指令。

範例和介面截圖使用 JetBrains IDE;操作名稱和位置可能會因版本而異。練習時請使用獨立的練習用儲存庫。在正式專案中,請遵循該專案對分支、提交和推送變更的規範。

這種做法還有另一個好處。Claude Code 在幕後執行的也是相同的 Git 操作,只是透過終端機指令完成。當它提議建立 commit、建立分支或推送變更時,背後用的都是一般的 Git 指令。了解 IDE 按鈕背後發生什麼事,您就能看懂 Claude Code 提議的操作,也能有根據地檢查並核准。

為什麼需要版本控制

開始開發專案時,您可能會覺得最重要的是讓程式碼能正常執行。但很快就會發現,程式碼變動得比穩定運作還頻繁。您修正 bug、加入 feature、改變主意、還原變更,然後又重新加入。

想像您正在開發自己的專案。一切都很順利,直到您想開始嘗試新做法。您想修改某些內容,卻擔心破壞目前可用的版本。怎麼辦?當然是複製整個專案。最後磁碟裡就會出現這些傑作:

MyProject/
├── main.py
├── main_backup.py
├── main_final.py
├── main_final2.py
├── main_really_final.py
├── main_really1_really_final2.py

是不是很熟悉?再想像有位朋友也加入這個專案。他也喜歡複製檔案,只是有自己的做法。要怎麼判斷哪個版本最新而且能正常運作?怎麼知道誰改了什麼?如果實驗失敗,又該如何全部還原?

沒有保留下來的歷史紀錄,就得手動比對各個檔案副本:

  • 很容易弄丟或搞混可用的程式碼;
  • 沒有統一的方法找回並還原已儲存的版本;
  • 兩三個人一起合作會變得很困難;
  • 混亂,也讓人不敢嘗試。
"為什麼需要版本控制"章節插圖

像 Git 這樣的版本控制系統,正是為了解決這些問題而生。

影片:終端機中的 Git 基礎

這部影片能幫您打下透過終端機使用 Git 的扎實基礎,也有助於理解 IDE 按鈕背後的運作方式。

影片中的範例使用 Java,但 Git 的基本操作在不同程式語言中都相同。

觀看 Git 基礎影片

Git 是什麼:基本概念

Git 是一套版本控制系統,用來追蹤開發期間程式碼的變更。它能保存檔案的不同版本,也能協調多人共同開發同一個專案。

儲存庫(也常簡稱 repo)是保存整個專案歷史紀錄的地方,包括所有變更和檔案版本。

Commit(提交)是已追蹤專案內容的一份已儲存快照,並附有訊息、作者資訊,以及與父 commit 的關聯。尚未提交和已忽略的檔案不會包含在這份快照裡。透過歷史紀錄,您可以找到並還原先前儲存的版本。

歷史紀錄中的連續快照ABCD
歷史紀錄中的連續快照

每個 commit 都是專案的一份快照,接續在前一個 commit 之後,形成連續的變更歷史。

分支(branch)是指向某條開發線目前 commit 的名稱。範例中的主要分支叫做 main;您的儲存庫可能使用其他名稱,取決於設定和建立儲存庫的方式。

上方的線是 main,下方的是 develop。合併後 main 指向 M,而 M 有兩個父 commit:E 和 D。ABEMCD
上方的線是 main,下方的是 develop。合併後 main 指向 M,而 M 有兩個父 commit:E 和 D。

從主要分支 main 分出 develop 分支,以便平行開發。完成後,再將 develop 的變更合併回 main。

Git 常用指令:幕後發生了什麼

以下列出透過終端機操作 Git 時常用的指令。我們會使用 IDE 圖形介面,不過了解各項操作背後的指令仍然很有幫助:Git 會在每個按鈕背後執行這些指令;Claude Code 操作您的儲存庫時也一樣。把它們想成幕後實際發生的事就好。

指令用途
git init在目前資料夾中初始化新的 Git 儲存庫
git clone依照 URL 將儲存庫複製到新資料夾
git status顯示哪些檔案已修改、已準備好提交,以及哪些檔案尚未納入 Git 追蹤
git add將檔案加入索引(staging),準備納入下一個 commit
git commit將已準備的變更記錄為歷史中的新快照
git push將本機儲存庫的 commit 推送到遠端儲存庫
git pull取得變更,並依照設定與目前分支合併
git fetch從伺服器下載變更,但暫時不會合併到您的分支
git branch顯示、建立或刪除分支
git checkout / git switchswitch 用來切換分支;checkout 也能切換到個別 commit 並還原檔案
git merge將指定分支的變更合併到目前分支
git log顯示 commit 歷史紀錄
git diff不帶旗標時,比較工作目錄中的檔案與索引;已準備的變更需另外檢視
git restore還原指定檔案;未指定來源時,工作目錄中的檔案會從索引還原,不一定是從最近一次 commit 還原
git reset變更索引或目前分支的位置;後果取決於指令形式和模式
git stash暫時收起尚未完成的變更,方便之後繼續處理
git remote -v顯示專案連接了哪些遠端儲存庫
git config設定 Git,例如 commit 作者的名稱和 email
"Git 常用指令:幕後發生了什麼"章節插圖

不必把整份清單背起來,剛開始只要知道 IDE 和代理的操作都仰賴 Git;一個介面操作可能會執行多個指令。例如,透過 Commit 提交會使用 git commit,而 Push 按鈕執行的是 git push。

  • 工作目錄中的檔案
  • git add → 索引
  • git commit → 歷史紀錄
  • git push → 伺服器

圖中展示的是推送流程:您透過 add 準備內容,以 commit 在本機記錄變更,再透過 push 推送 commit。反向的 pull 則會取得遠端 commit,並依照設定與目前分支合併。

與 Claude Code 的關聯

這正是 Claude Code 會替您執行的操作。它說要建立 commit 並推送變更時,背後做的就是 git add、git commit 和 git push。您可以在同一個 IDE 視窗中查看結果並進行檢查。

程式碼的四種狀態

使用版本控制時,程式碼在概念上會經過以下四種狀態:

1. 工作目錄(Working Directory)。您目前正在電腦上編輯的專案檔案。

2. 暫存區(Staging Area)。下一個 commit 預備納入的內容。在 JetBrains 中,您可以透過變更清單操作,也可以啟用獨立的 staging 模式。一般 Commit 視窗中的勾選框會選取要提交的內容,但不代表這些內容已經放進 Git 索引。

3. 本機儲存庫(Local Repository)。專案程式碼歷史紀錄在您電腦上的個人副本。即使沒有網路,也能在這裡建立 commit、分支和合併。

4. 遠端儲存庫(Remote Repository)。存放在 GitHub、GitLab 或 Bitbucket 等服務上的中央程式碼儲存空間。它能可靠地保存程式碼,也是團隊協作的基礎。

與 Claude Code 的關聯

Claude Code 詢問是否將新檔案納入追蹤時,會把檔案從工作目錄加入 staging,使用的指令是 git add。加入時,檔案內容就會準備好供提交;之後再修改的內容,必須重新準備一次。如果不需要加入該檔案(例如它只是暫存垃圾),您可以拒絕。

Git 和 GitHub 有什麼不同

請清楚區分這兩個概念。Git 是在您的電腦上本機執行的程式(不需要網路也能使用),負責追蹤檔案版本。GitHub 則是雲端服務(網站),用來存放 Git 儲存庫的遠端副本。

GitHub 可以讓您建立儲存庫、追蹤變更,並與他人共同開發。對現代開發者來說,GitHub 個人檔案是作品集的重要一環,可以展示給雇主看。

在 GitHub 建立第一個儲存庫

建立新的儲存庫

步驟 1。前往 https://github.com 並註冊帳號。

步驟 2。按一下 New repository 按鈕,建立新的儲存庫。

New repository 按鈕

步驟 3。設定儲存庫的選項:

  1. 儲存庫名稱 - 取一個有意義的名稱;
  2. Public 或 Private - 請審慎選擇可見性。Public 代表所有人都能存取;Private 則會限制存取。若是個人練習,而且您不打算公開,可以選擇 Private。
  3. Add a README file - 新的空白專案通常適合加入 README。如果您要推送已經存在的本機歷史紀錄,請建立不含 README 的空白遠端儲存庫,避免產生兩份彼此獨立的初始歷史。
  4. Add .gitignore - 選擇符合專案技術的範本。下拉式清單中有常見程式語言的現成範本。這很重要:建置流程和套件管理工具會產生許多暫存檔和快取,不該讓它們弄亂儲存庫;範本能幫助 Git 忽略這些檔案;
  5. Choose a license - 可以略過;
  6. 按一下 Create repository。
"在 GitHub 建立第一個儲存庫"章節插圖

步驟 4。完成,您的第一個遠端儲存庫已建立。

GitHub 上已建立的儲存庫

安裝並設定 Git

接下來展示的是 IntelliJ IDEA 介面。其他 JetBrains IDE 也有類似操作,但按鈕位置和選單項目名稱會依版本而異。請以動作名稱為準;您可以透過 IDE 的動作搜尋功能找到它。

若要使用 Git,請先安裝它。如果您使用 JetBrains IDE,而系統中找不到 Git,IDE 很可能會主動建議安裝,直接同意通常最簡單。

透過 File | Close Project 關閉目前的專案。在起始畫面(Welcome Screen)中,按一下 Clone Repository(某些版本的按鈕名稱是 Get from VCS)。

IntelliJ IDEA 起始畫面

如果您想手動安裝 Git,可以從官方網站下載:https://git-scm.com/downloads。

一個重要細節

第一次建立 commit 時,Git 需要作者名稱和 email。這是 commit 的署名,不是登入帳號。若要讓 GitHub 將 commit 與您的帳號連結,請使用帳號設定中已驗證的地址,或使用 GitHub 提供的 noreply 地址,以免公開個人 email。

GitHub 會依 email 將 commit 與個人檔案連結。地址相符本身並不保證活動紀錄會出現在貢獻圖表中,還有其他條件。

讓 Claude Code 直接操作 Git 和 GitHub,需要安裝什麼

在本機建立 commit 和分支只需要安裝 Git,不必登入 GitHub。若要操作遠端儲存庫,請設定存取權限。GitHub CLI (gh) 是處理 PR 和其他 GitHub 功能的額外工具,不是 Git 的必要部分。

1. Git。用來操作本機歷史紀錄。請透過 IDE 或 Git 官方網站安裝。

2. GitHub CLI(gh)是 GitHub 官方的命令列工具。它的用途是讓 Claude Code 直接在終端機建立 pull request、讀取 issues、查看檢查狀態,不必切換到瀏覽器。安裝方式取決於您的作業系統。

您的作業系統安裝說明請參考 GitHub CLI 官方頁面。安裝完成後,使用 gh --version 確認工具可以使用。

如果您選擇使用 GitHub CLI,請啟動存取設定並依照提示操作。使用 GitHub.com 時,可以選擇 HTTPS,並透過瀏覽器登入:

# 從終端機登入 GitHub 帳號
gh auth login

Claude Code 可以使用 git 管理歷史紀錄,也可以使用 gh 操作 GitHub。如果您選擇這種 GitHub 操作方式,就需要安裝 gh 並執行 gh auth login。建立 PR 和推送 commit 都會依照您的任務進行,並在確認要推送的內容後才執行。

main 和 master

儲存庫中常見 main 和 master 這兩種名稱。GitHub 通常會建議使用 main;Git 在本機初始化時則會依據版本和 init.defaultBranch 設定決定預設名稱。請確認專案中實際使用的分支名稱。

這兩個名稱都代表一般分支。請將範例中的指令對照到您的儲存庫實際使用的分支名稱。

Claude Code 如何搭配 Git 使用

了解 Git 的基本概念後,您會更容易看懂 Claude Code 的操作。以下是它會替您執行的工作,以及值得留意的地方:

  • 替您執行 git add、git commit、git push 等指令,也就是 IDE 按鈕背後的那些操作;
  • 提議將檔案加入追蹤(git add)- 由您決定要不要將檔案納入歷史紀錄;
  • 提出已擬好訊息的 commit -您可以先閱讀它要記錄的內容,再選擇同意或修改;
  • 透過 GitHub CLI 建立 pull request(PR,也就是提議將分支合併到主要分支)並在上面留言,也能查看檢查狀態。
與 Claude Code 的關聯

同意前,請先確認哪些檔案和變更會納入 commit。Claude Code 和 IDE 一樣會以 diff 顯示這些內容。這就是您的把關點:您能清楚知道哪些內容會進入專案歷史紀錄並推送到伺服器。

下一篇文章:日常 Git 工作流程