【GitHub Flow 教學】#01 什麼是 GitHub Flow?為什麼團隊都在用?

測驗:什麼是 GitHub Flow?為什麼團隊都在用?

共 5 題,點選答案後會立即顯示結果

1. GitHub Flow 的核心理念是什麼?

  • A. 所有開發工作都直接在 main 分支上進行
  • B. main 分支永遠是可部署的狀態
  • C. 每個功能都需要建立獨立的遠端倉庫
  • D. 必須有至少三個長期分支

2. 在 GitHub Flow 中,Pull Request(PR)提供了哪些功能?

  • A. 只能用來合併程式碼,無法討論
  • B. 自動修復程式碼錯誤
  • C. 直接部署到正式環境
  • D. 程式碼審查、討論空間、CI/CD 整合

3. GitHub Flow 與 Git Flow 相比,主要差異是什麼?

  • A. GitHub Flow 只有一個長期分支,Git Flow 至少有兩個
  • B. Git Flow 比 GitHub Flow 更簡單
  • C. GitHub Flow 需要更多分支管理
  • D. Git Flow 只適合小團隊使用

4. 以下哪種情況最適合使用 GitHub Flow?

  • A. 需要同時維護多個正式版本的桌面軟體
  • B. 有固定每月發布週期的大型企業專案
  • C. 需要持續部署的 Web 應用與小型敏捷團隊
  • D. 需要嚴格版本里程碑的合規專案

5. 關於 PR 的最佳實踐,以下敘述何者正確?

  • A. 一個 PR 應該包含所有相關功能,越大越好
  • B. 一個 PR 只做一件事,建議控制在 200-400 行程式碼變更
  • C. 小團隊不需要進行 Code Review
  • D. PR 必須由至少三位團隊成員審查才能合併

前言

當你開始與團隊協作開發時,一定會遇到這個問題:「大家都在同一個專案上改 code,要怎麼避免互相踩到?」

這就是分支策略(Branching Strategy)要解決的問題。而 GitHub Flow 是目前最受歡迎的分支策略之一,因為它簡單、直覺,而且非常適合現代的持續部署(Continuous Deployment)工作流程。

學習目標

讀完本篇後,你將能夠:

  • 理解 GitHub Flow 的核心概念與六個步驟
  • 了解 GitHub Flow 與 Git Flow 的差異
  • 判斷何時適合使用 GitHub Flow

前置知識

在開始之前,你需要具備:

  • 基本 Git 操作(commit, push, pull)
  • 了解什麼是分支(branch)

GitHub Flow 是什麼?

GitHub Flow 是一種簡單的分支策略,核心理念只有一個:

main 分支永遠是可部署的狀態

這意味著:

  • 所有開發工作都在功能分支(feature branch)上進行
  • 完成後透過 Pull Request(PR) 合併回 main
  • main 分支的程式碼隨時都可以部署到正式環境

聽起來很簡單對吧?這正是 GitHub Flow 的優點——簡單到幾乎不需要學習


GitHub Flow 的六個步驟

讓我們透過一個實際情境來理解這六個步驟。

假設你要在專案中新增一個「使用者登入」功能:

步驟 1:從 main 建立分支

# 先確保 main 是最新的
git checkout main
git pull origin main

# 建立並切換到新分支
git checkout -b feature/user-login
Code language: PHP (php)

重點:分支名稱要能描述這個功能,讓其他人一眼就知道你在做什麼。

常見的命名慣例:

  • feature/功能名稱 – 新功能
  • fix/問題描述 – 修復 bug
  • docs/文件名稱 – 文件更新

步驟 2:在分支上開發並 commit

# 開發過程中,持續 commit 你的進度
git add .
git commit -m "Add login form UI"

git add .
git commit -m "Implement login API call"

git add .
git commit -m "Add login validation"
Code language: PHP (php)

重點:每個 commit 應該是一個有意義的變更單位,而不是「每天下班前 commit 一次」。

步驟 3:Push 到遠端

git push origin feature/user-login

重點:即使功能還沒完成,也建議定期 push。這樣可以:

  • 備份你的程式碼
  • 讓其他人看到你的進度
  • 方便在不同電腦上繼續開發

步驟 4:發起 Pull Request(PR)

在 GitHub 網站上,點擊「New Pull Request」,選擇你的分支要合併到 main。

PR 是 GitHub Flow 的核心環節,它提供了:

  • 程式碼審查(Code Review):讓其他人檢查你的程式碼
  • 討論空間:針對特定程式碼行留言討論
  • CI/CD 整合:自動執行測試、檢查程式碼品質

步驟 5:討論與審查

團隊成員會:

  • 閱讀你的程式碼變更
  • 提出問題或建議
  • 要求修改或直接通過

如果需要修改,你只需要在同一個分支上繼續 commit 並 push,PR 會自動更新。

步驟 6:合併並部署

當 PR 通過審查後:

  1. 點擊「Merge Pull Request」
  2. 刪除已合併的分支(GitHub 會提示你)
  3. main 更新後,可以立即部署到正式環境

GitHub Flow vs Git Flow:該選哪個?

你可能聽過另一個叫做 Git Flow 的分支策略。讓我們比較一下:

Git Flow 的結構

main ─────────────────────────────────────────────>
  │                                    ↑
  └── develop ──────────────────────────
        │           ↑         ↑
        ├── feature/A ────────┘         │
        └── feature/B ──────────────────┘

Git Flow 有多個長期分支:

  • main:正式版本
  • develop:開發中版本
  • feature/*:功能分支
  • release/*:發布準備
  • hotfix/*:緊急修復

GitHub Flow 的結構

main ─────────────────────────────────────────────>
  │         ↑              ↑
  ├── feature/A ───────────┘              │
  └── feature/B ──────────────────────────┘

GitHub Flow 只有:

  • main:唯一的長期分支
  • feature/*:短期功能分支

比較表

特性 GitHub Flow Git Flow
分支數量 少(1 個長期分支) 多(至少 2 個長期分支)
學習成本 較高
適合部署頻率 持續部署(每天多次) 週期性發布(每週/每月)
適合團隊規模 小到中型團隊 中到大型團隊
版本管理 簡單 精細

如何選擇?

選 GitHub Flow 當你:

  • 團隊規模較小(2-10 人)
  • 需要快速迭代、持續部署
  • 專案是 Web 應用或 SaaS 服務
  • 不需要維護多個正式版本

選 Git Flow 當你:

  • 需要維護多個版本(如桌面軟體、SDK)
  • 有固定的發布週期
  • 團隊規模較大,需要更嚴格的流程
  • 正式版與開發版需要明確區分

GitHub Flow 的適用場景

最適合的情境

  1. 持續部署的 Web 應用
    • 每個 PR 合併後自動部署
    • 用戶永遠使用最新版本
  2. 小型敏捷團隊
    • 溝通成本低
    • 快速決策、快速交付
  3. 開源專案
    • 外部貢獻者容易理解流程
    • PR 機制天然適合開源協作

不太適合的情境

  1. 需要維護多版本的軟體
    • 例如:v1.x 和 v2.x 同時維護
    • 此時 Git Flow 更適合
  2. 有嚴格合規要求的專案
    • 需要詳細的發布記錄
    • 需要明確的版本里程碑

常見問題

Q: 如果 main 更新了,我的分支怎麼辦?

在發起 PR 前,建議先同步 main 的最新變更:

git checkout main
git pull origin main
git checkout feature/user-login
git merge main
# 或使用 rebase
git rebase main
Code language: PHP (php)

Q: PR 一定要別人審查嗎?

技術上不強制,但強烈建議。即使是小團隊,Code Review 也能:

  • 發現潛在問題
  • 分享知識
  • 維持程式碼品質一致性

Q: 一個 PR 應該多大?

越小越好。建議:

  • 一個 PR 只做一件事
  • 控制在 200-400 行程式碼變更
  • 如果功能太大,拆成多個 PR

重點整理

  1. GitHub Flow 是簡單的分支策略:只有 main 一個長期分支,所有開發都在功能分支進行
  2. 六個步驟:建立分支 → 開發 commit → Push → 發起 PR → 審查討論 → 合併部署
  3. 與 Git Flow 的差異:GitHub Flow 更簡單,適合持續部署;Git Flow 更完整,適合週期性發布
  4. 適用場景:Web 應用、小團隊、持續部署、開源專案

下一步

在下一篇文章中,我們將實際操作 GitHub Flow 的第一步:建立 Branch 與 PR。你將學會如何在實際專案中開始使用這個工作流程。

進階測驗:什麼是 GitHub Flow?為什麼團隊都在用?

測驗目標:驗證你是否能在實際情境中應用所學。
共 5 題,包含情境題與錯誤診斷題。

1. 你剛加入一個新專案,想要開發「使用者登入」功能 情境題

你目前在 main 分支上,需要建立一個新的功能分支來開發。根據 GitHub Flow 的最佳實踐,你應該怎麼做?
  • A. 直接在 main 分支上開始開發,完成後再建立分支
  • B. 執行 git branch user-login 建立分支後繼續在 main 上開發
  • C. 先 git pull origin main 確保 main 是最新的,再執行 git checkout -b feature/user-login
  • D. 執行 git checkout -b develop 建立 develop 分支

2. 你的團隊正在評估採用哪種分支策略 情境題

你們是一個 5 人的 Web 開發團隊,專案是一個 SaaS 產品,需要每天多次部署到正式環境,且只維護單一版本。應該選擇哪種分支策略?
  • A. Git Flow,因為它更完整、功能更多
  • B. GitHub Flow,因為它簡單且適合持續部署
  • C. Git Flow,因為 5 人團隊需要更嚴格的流程
  • D. 不需要任何分支策略,直接在 main 上開發

3. 你的功能開發到一半,發現 main 分支有更新 情境題

你正在 feature/user-login 分支上開發,同事的 PR 已經合併到 main。在發起 PR 前,你應該怎麼處理?
  • A. 不需要處理,直接發起 PR 讓 GitHub 自動處理
  • B. 刪除目前分支,重新從最新的 main 建立新分支
  • C. 在 main 上執行 git merge feature/user-login
  • D. 先更新 main,再將 main 的變更合併或 rebase 到你的分支

4. 小明的分支命名有什麼問題? 錯誤診斷

$ git checkout -b new-branch Switched to a new branch ‘new-branch’ $ git log –oneline -3 a1b2c3d Add some changes e4f5g6h More updates i7j8k9l Fix stuff
小明建立了這個分支來開發購物車功能,但團隊 code review 時指出他的做法不符合最佳實踐。最主要的問題是什麼?
  • A. 分支名稱不具描述性,無法讓其他人一眼知道在做什麼功能
  • B. 應該使用 git switch 而不是 git checkout
  • C. 分支名稱不能使用連字號
  • D. 需要先建立 develop 分支再建立功能分支

5. 這個團隊的工作流程有什麼問題? 錯誤診斷

團隊工作流程: 1. 小華完成功能後,直接執行 git push origin main 2. 小明看到更新後,執行 git pull 取得最新程式碼 3. 專案經理每週五手動部署 main 到正式環境
這個團隊聲稱他們在使用 GitHub Flow,但實際上並沒有正確遵循。最關鍵的問題是什麼?
  • A. 應該每天部署,而不是每週部署
  • B. 沒有使用功能分支和 Pull Request 進行程式碼審查
  • C. 應該使用 Git Flow 而不是 GitHub Flow
  • D. 小明應該使用 git fetch 而不是 git pull

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *