GitHub 協作流程指南:分支策略、PR 審查與 Agent 自動化完整教學

學習 GitHub 團隊協作標準流程:分支命名規範、9 步驟 PR 循環、Squash Merge 策略、分支保護規則與 Codex Agent 自動化整合,適合 Full Agentic 團隊快速上手。

GitHub 協作核心概念

GitHub 團隊協作的基礎邏輯只有一條:所有人在各自的分支開發,完成後透過 Pull Request(PR)請求審查,通過才合併回 main 主分支。這個機制確保多人同時開發時不會互相覆蓋程式碼,並保留完整的修改歷史。

把 repo 想像成一本共享筆記本,main 是正式版本。若兩人直接在 main 改同一檔案,後存者會覆蓋先存者。分支就像「影印一份筆記本」,讓每人在副本上安心修改,完成後用 PR 說:「我改好了,請檢查並合併回正式版」。

標準 9 步驟協作循環

適合搭配 Codex Agent 自動化執行的標準流程:

步驟 指令 / 動作 說明
1 git pull origin main 先拉取最新 main,確保從最新版本開始
2 git checkout -b feature/功能名稱 建立並切換新分支(如 feature/login
3 開發與提交 Agent 在分支修改程式碼,執行 git commit -m "描述"
4 git push origin feature/功能名稱 推送分支到 GitHub
5 在 GitHub 建立 PR 點選「Compare & pull request」,填寫標題與說明
6 同事審查 在 PR 頁面查看異動、留言提問或要求修改
7 解決衝突(如有) main 有更新,先 git pull 再手動解決衝突
8 合併 PR 審查通過後點選「Merge pull request」合併回 main
9 刪除分支 合併後刪除已完成分支,保持 repo 整潔

實戰情境:兩位開發者平行開發

開發者 A:登入功能

# 1. 拉下最新 main
git pull origin main

# 2. 建立分支
git checkout -b feature/login

# 3-4. 開發、提交、推送
git add .
git commit -m "Add login form"
git push origin feature/login

# 5. 建立 PR:feature/login → main
# 6. 開發者 B 審查
# 7-8. 通過合併
# 9. 刪除分支
git branch -d feature/login

開發者 B:購物車功能(同步進行)

git pull origin main
git checkout -b feature/cart
git add .
git commit -m "Add shopping cart"
git push origin feature/cart
# 建立 PR → 開發者 A 審查 → 合併 → 刪除分支

兩分支獨立開發互不干擾。合併時 GitHub 自動檢查衝突,有衝突會提示需手動解決。

Full Agentic 團隊最佳實踐

分支命名規範

統一命名讓 Agent 更易識別與自動化:

  • feature/功能名稱:新功能開發
  • fix/問題描述:Bug 修復
  • hotfix/緊急修復:生產環境緊急修復

PR 審查重點

  • 異動檔案檢查:確認只改相關檔案
  • 測試通過:CI/CD 自動化測試全部綠燈
  • 程式碼品質:遵循團隊風格指南與最佳實踐
  • 留言全數解決:審查者提問皆已回覆

合併策略:建議 Squash Merge

  • 將分支多個 commit 壓縮為單一 commit 合併進 main
  • 保持主分支提交紀錄乾淨
  • 適合功能導向開發流程

分支保護規則(必啟用)

在 GitHub Repo Settings → Branches 中設定:

  • 禁止直接 push 到 main
  • 要求至少 1 人審查通過才能合併
  • 要求 CI 測試通過才能合併

常見問題解答

Q: 什麼是 Merge Conflict?

當兩人修改同一檔案同一行程式碼,Git 無法自動決定保留哪版,產生衝突。

解決步驟

  1. 本地執行 git pull origin main 拉取最新變更
  2. 用編輯器(如 VS Code)手動選擇保留的程式碼
  3. 提交解決結果:git add .git commit -m "Resolve merge conflict"
  4. 再次 push,PR 自動更新

Q: 可用 GitHub Desktop 或 VS Code 操作嗎?

可。這些 GUI 工具本質執行相同 Git 指令,對初學者更友善。

Q: Codex Agent 如何自動化此流程?

設計 Agent 工作流:

  1. 偵測新功能需求 → 自動建立分支
  2. 開發完成 → 自動 commit 與 push
  3. 呼叫 GitHub API 建立 PR
  4. 通知同事審查(Slack、Email 等)
  5. 審查通過 → 自動合併並刪除分支

結語

這套流程是現代軟體開發的標準做法。熟練後能大幅降低協作衝突,讓程式碼審查成為團隊的品質把關機制。對 Full Agentic 團隊而言,將上述步驟封裝為自動化工作流,更能釋放開發產能,專注於核心業務邏輯。

可以把 Git 操作交給 Agent。你們需要學會的是「分配工作、驗收成果、決定何時上線」,不必親自輸入 git pullgit commit

對剛開始協作的團隊,建議採用:

一個任務、一個獨立工作區、一條分支、一份 PR;所有成果經過共同檢查後,再合併與部署。

以下以「三位同事一起開發購物網站」為例。Prompt 都可以直接交給 Agent;其中的 [內容] 換成實際需求即可。這是流程設計與學習範例,尚未變更你們的 repo。

先理解 6 個概念

  • Repo:共同專案。 存放程式與修改紀錄的地方。

  • main:團隊正式採用的程式版本。 以下假設主分支叫 main;實際名稱讓 Agent 檢查。

  • Branch(分支):某個任務的修改版本。 例如「購物車改版」與「登入修復」分開進行。

  • Commit:存下一筆可追蹤的修改紀錄。 Agent 會處理。

  • PR(Pull Request):成果交付單。 包含改了什麼、測試結果,以及準備併入哪個版本。

  • Merge(合併):把通過檢查的成果納入共同版本。

GitHub 官方的 GitHub flow 就是以分支、PR、審查與合併為核心。(GitHub Docs)

還有一個關鍵:合併與部署是兩件事。 合併是更新共同程式;部署是把某個版本送到網站或服務執行。你們可以設定「合併後自動部署」,但單純連上 repo 並不代表這條流程已經存在。


情境一:兩位同事同時做不同功能

同事 A 做「首頁」,同事 B 做「購物車」。

兩人可以同時開發,但應該各用獨立工作區。若在同一台機器上執行多個 Agent,可以使用 worktree,讓每個任務擁有自己的檔案副本。Codex 的官方說明將 worktree 用於隔離並行工作。(ChatGPT Learn)

特別注意:只開兩個聊天視窗,不代表底下的檔案已經隔離。

同事 A 使用這份 Prompt;同事 B 把需求換成購物車即可:

請完成這個開發任務:[重新設計首頁,保留既有登入與購物流程]。

我們有其他同事和 Agent 同時開發,請遵循以下流程:

  1. 讀取適用的 AGENTS.md、README,確認 repo、主分支與目前工作區狀態。

  2. 使用本任務專屬的獨立工作區與分支,從遠端最新主分支開始。保留既有未提交修改,不要混入本任務。

  3. 檢查可讀取的相關進行中 PR,辨識可能重疊的工作;不要修改別人的分支。

  4. 完成需求與必要測試。避免順手重構無關功能。

  5. 自行完成 commit、push,並建立 PR。

  6. PR 中說明改了什麼、測試結果,以及初學者可以怎麼驗收;若已有預覽部署流程,提供預覽網址。

  7. 本任務交付到 PR,不合併或部署正式環境。

可以自行完成例行 Git 操作。若缺少存取權或必要工具,清楚回報卡在哪個步驟,不要將未完成的動作描述成已完成。

預期結果: A 和 B 各自交付一份 PR。誰先完成,誰就先進入驗收;另一個任務可以繼續開發。


情境二:兩個功能都完成了,怎麼合併?

假設:

  • PR #21:首頁改版。

  • PR #22:購物車改版。

可以指定一個 Agent 負責整合。這是工作分工,不一定需要另一套產品或另一個帳號。

重點是:#21 合併後,#22 必須確認自己仍能與最新版本一起正常運作。

flowchart TD
    A["共同版本 main"] --> B["A:首頁分支"]
    A --> C["B:購物車分支"]
    B --> D["PR #21:檢查與驗收"]
    C --> E["PR #22:檢查與驗收"]
    D --> F["#21 合併到 main"]
    F --> G["#22 整合最新 main 並重測"]
    E --> G
    G --> H["#22 合併到 main"]

交給整合 Agent:

請整合 PR #21 與 PR #22。我授權你在符合 repo 現有規則、必要檢查與審查要求的前提下完成合併。

  1. 閱讀兩份 PR 的需求、差異、測試結果與相依關係,決定合併順序。

  2. 檢查兩個功能放在一起是否有行為衝突,不只檢查 Git 是否可以合併。

  3. 逐一合併。前一份 PR 合併後,讓下一份 PR 與最新主分支整合,重新執行受影響的檢查;如有 merge queue,遵循既有佇列流程。

  4. 若有問題,先修復並重新驗證。不要略過測試、取消保護規則或強制覆蓋主分支。

  5. 如果衝突涉及無法同時成立的產品需求,用白話說明並請我決定。

  6. 完成後提供 PR 連結、合併結果,以及是否觸發了既有部署流程。只有確認部署成功,才能回報已上線。

GitHub 可以要求 PR 通過檢查、保持與主分支同步後才能合併;較忙碌的團隊也能使用 merge queue,檢查排隊中的變更與最新主分支組合是否通過測試。功能可用性需依 repo 與方案確認。(GitHub Docs)


情境三:兩個人都改到同一個地方

例如:

  • A 把「立即購買」按鈕改成新版設計。

  • B 在同一個按鈕加入「未登入先登入」。

修改同一個檔案不一定會衝突;沒有 Git 衝突也不保證功能正確。 比如兩份程式可以順利合併,按鈕卻失去原本的登入檢查。

因此,不要只對 Agent 說「幫我解 conflict」,要告訴它應該保留哪些行為。

請處理 PR [編號] 與最新主分支的衝突。

必須保留的需求:

  • 採用新版按鈕設計。

  • 未登入者點擊後,先進入登入流程。

  • 已登入者可以正常購買。

請先閱讀雙方修改與原始需求,再整合出同時符合上述需求的實作。不要直接選擇全部保留我方或對方版本。

請檢查文字衝突與功能衝突,驗證未登入、已登入兩條流程,並更新原 PR。

技術上可以判定的問題請自行處理;若需求互斥,請用使用者實際會看到的差異說明,讓我做產品決定。

你們要決定的是「按鈕應該怎麼運作」,程式如何整合交給 Agent。


情境四:我的功能需要同事還沒完成的功能

例如 A 做購物車畫面,B 做「取得購物車資料」的 API。

這時最容易出現的問題,是兩個 Agent 各自猜資料格式,最後接不起來。

建議先約定「雙方交接的格式」,也就是 API 的輸入、輸出、錯誤情況與範例資料,再各自開發。

這個任務是購物車前端,依賴尚未完成的購物車 API,相關工作是 [Issue 或 PR 連結]。

請先檢查 repo 是否已有 API 格式約定。

若已有約定,依照它開發;若沒有,先在 repo 中建立可供双方使用的介面約定草稿,包括欄位、範例資料、空購物車與錯誤回應。指出需要負責人決定的問題,不要自行猜測關鍵規則。

前端可先使用符合約定的模擬資料,但必須明確標示哪些驗證使用模擬資料。

API 合併後,接上真實 API 並執行整合測試。在真實串接驗證完成前,PR 保持草稿狀態,不要宣稱功能已完整完成。

預期結果: 兩人可以並行,但共用同一份規格。API 完成後,還有一次真正的串接驗證。


情境五:我不想每次確認,能不能自動合併、自動部署?

可以設計,但要先把「什麼情況可以自動做」寫清楚。

建議剛開始採用:

  • 開發、測試、commit、push、建立 PR: Agent 自行完成。

  • 預覽環境: 自動部署,讓同事直接看成果。

  • 合併: 符合事先約定的檢查與審查條件後,自動執行。

  • 正式部署: 由單一部署流程接手,避免各個開發 Agent 分別上傳版本。

GitHub 的 auto-merge 可以在必要檢查與審查要求滿足後自動合併。但 Agent 說「我審查過了」,不等於已取得 GitHub 規則要求的核准。(GitHub Docs)

可先交付一次性的建置任務:

請替這個 repo 建立適合初學者團隊的 Agent 協作流程。

目標是:人員用自然語言交代需求,Agent 完成 Git 操作,通過既定條件後自動合併與部署。

請先盤點現有分支規則、CI、測試、預覽與正式部署方式,沿用可用的設定。

請透過 PR 完成:

  1. 將任務隔離、分支、PR、衝突處理與交付規則加入適用的 AGENTS.md。

  2. 建立簡潔 PR 範本,包含需求、驗證結果與驗收方式。

  3. 補上專案需要的自動檢查。

  4. 準備預覽部署與主分支合併後部署的流程,讓正式部署依序執行,避免舊版本晚完成卻覆蓋新版本。

  5. 記錄每次部署對應的版本,以及失敗時如何恢復。

請提出明確的自動合併範圍:哪些變更可自動完成、哪些需要產品負責人決定。不要僅依 PR 作者自行填寫的「低風險」標籤判定。

可安全完成的 repo 內變更請直接做好。需要管理員權限、外部平台設定或機密值的部分,先準備具體設定與必要步驟,再列出尚待完成的項目;不要要求我把密鑰貼進聊天。

最後用白話區分:已實作、已實際驗證、尚未啟用的部分。不要將文件中的規則當成 GitHub 已強制執行的保護。

AGENTS.md 是 Agent 的工作手冊;GitHub 的保護規則才是平台實際執行的合併限制。 兩者應搭配使用。


情境六:合併上線後,網站壞了

例如首頁改版上線後,購物車無法結帳。

此時應先恢复服務,再找原因。也要區分「把線上版本退回去」和「在 repo 建立撤銷修改的紀錄」:兩者可能都需要處理。

正式環境出現問題:[描述現象與網址]。

請確認目前線上版本、最近部署與相關 PR,先判斷影響範圍。

我授權你依既有回復流程,將應用程式恢復至最近已知正常版本,並確認主要功能恢復。請避免後續部署立即把問題版本重新送上線。

若需要撤銷程式修改,請建立可追蹤的 revert PR,保留後續同事的無關修改,不要重寫主分支歷史。

若涉及資料庫、資料刪除或外部交易,先確認回退是否相容;不要假設退回程式就能還原資料。

最後回報:是否已恢復、目前線上版本、確認方式,以及後續修復 PR。尚未查明的原因請標示為未確認。


你們每天實際只需要這樣交代工作

開工時:

「完成這個需求,使用獨立工作區與分支,測試後開 PR 給我驗收。」

驗收時:

「用白話說明改了什麼,給我預覽網址與三個需要檢查的操作。」

交付時:

「驗收通過,請依 repo 規則完成合併與部署,確認上線結果。」

人員負責需求與驗收,Agent 負責實作與 Git 操作,共同流程負責檢查、合併與部署。 這樣即使大家不會 Git 指令,也能清楚知道每個任務在哪個階段,以及誰的修改已經上線。