完成開發分支
概述
透過呈現清晰的選項並處理所選的工作流程來指導開發工作的完成。
核心原則: 驗證測試 → 呈現選項 → 執行選擇 → 清理。
開始時宣布: "我正在使用 finishing-a-development-branch 技能來完成這項工作。"
流程
步驟 1:驗證測試
在呈現選項之前,驗證測試通過:
bash
# 執行專案的測試套件 npm test / cargo test / pytest / go test ./...
如果測試失敗:
code
測試失敗(<N> 個失敗)。必須在完成前修復: [顯示失敗] 在測試通過之前無法進行合併/PR。
停止。不要進入步驟 2。
如果測試通過: 繼續步驟 2。
步驟 2:確定基礎分支
bash
# 嘗試常見的基礎分支 git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null
或詢問:"這個分支是從 main 分出來的 - 對嗎?"
步驟 3:呈現選項
精確呈現這 4 個選項:
code
實作完成。你想做什麼? 1. 在本地合併回 <base-branch> 2. 推送並建立 Pull Request 3. 保持分支現狀(我稍後處理) 4. 捨棄這項工作 選擇哪個?
不要添加說明 - 保持選項簡潔。
步驟 4:執行選擇
選項 1:本地合併
bash
# 切換到基礎分支 git checkout <base-branch> # 拉取最新 git pull # 合併功能分支 git merge <feature-branch> # 在合併結果上驗證測試 <test command> # 如果測試通過 git branch -d <feature-branch>
然後:清理工作樹(步驟 5)
選項 2:推送並建立 PR
bash
# 推送分支 git push -u origin <feature-branch> # 建立 PR gh pr create --title "<title>" --body "$(cat <<'EOF' ## 摘要 <2-3 個變更要點> ## 測試計劃 - [ ] <驗證步驟> EOF )"
然後:清理工作樹(步驟 5)
選項 3:保持現狀
報告:"保持分支 <name>。工作樹保留在 <path>。"
不要清理工作樹。
選項 4:捨棄
先確認:
code
這將永久刪除: - 分支 <name> - 所有提交:<commit-list> - 位於 <path> 的工作樹 輸入 'discard' 確認。
等待精確確認。
如果確認:
bash
git checkout <base-branch> git branch -D <feature-branch>
然後:清理工作樹(步驟 5)
步驟 5:清理工作樹
對於選項 1、2、4:
檢查是否在工作樹中:
bash
git worktree list | grep $(git branch --show-current)
如果是:
bash
git worktree remove <worktree-path>
對於選項 3: 保留工作樹。
快速參考
| 選項 | 合併 | 推送 | 保留工作樹 | 清理分支 |
|---|---|---|---|---|
| 1. 本地合併 | ✓ | - | - | ✓ |
| 2. 建立 PR | - | ✓ | ✓ | - |
| 3. 保持現狀 | - | - | ✓ | - |
| 4. 捨棄 | - | - | - | ✓ (強制) |
常見錯誤
跳過測試驗證
- •問題: 合併損壞的程式碼,建立失敗的 PR
- •修復: 在提供選項前始終驗證測試
開放式問題
- •問題: "接下來我該做什麼?" → 模糊
- •修復: 精確呈現 4 個結構化選項
自動清理工作樹
- •問題: 在可能需要時移除工作樹(選項 2、3)
- •修復: 只在選項 1 和 4 時清理
捨棄時沒有確認
- •問題: 意外刪除工作
- •修復: 要求輸入 "discard" 確認
危險信號
絕不:
- •在測試失敗時繼續
- •在未驗證結果測試的情況下合併
- •在未確認的情況下刪除工作
- •在未明確請求的情況下強制推送
始終:
- •在提供選項前驗證測試
- •精確呈現 4 個選項
- •選項 4 需要輸入確認
- •只在選項 1 和 4 時清理工作樹
整合
被以下呼叫:
- •subagent-driven-development(步驟 7)- 所有任務完成後
- •executing-plans(步驟 5)- 所有批次完成後
配合使用:
- •using-git-worktrees - 清理該技能建立的工作樹