--- name: git-workflow description: | Git 分支命名與工作流程規範,確保團隊協作一致性和版本控制最佳實踐。包含分支命名格式、提交規範、Pull Request 流程,以及防止直接修改 main 分支的安全機制。適用於所有涉及檔案修改、新增功能、bug 修復的開發任務。 ⚠️ 關鍵規則 - 必須遵守: 1. 絕對不可以直接在 main 分支上進行任何修改或提交 2. 任何變更都必須先建立功能分支(格式://) 3. 完成後透過 Pull Request 合併 4. 本技能適用於所有涉及檔案修改、新增功能、bug 修復的任務 觸發時機:任何需要修改專案檔案的操作(包括新增、編輯、刪除檔案)都必須參考此規範。 license: MIT --- # ⚠️ 核心規則 - 開始任何工作前必讀 ## 🚫 絕對禁止的操作 **在開始任何程式碼修改前,必須先檢查目前分支!** ```bash # 檢查目前分支 git branch # 如果在 main 分支,立即建立新分支 git checkout -b // ``` ### 禁止清單 ❌ **絕對不可以直接在 main 分支上修改檔案** ❌ 不可以在 main 分支上執行 `git add` ❌ 不可以在 main 分支上執行 `git commit` ❌ 不可以在 main 分支上編輯、新增或刪除任何檔案 ### 正確流程 ✅ 先確認目前在 main 分支 ✅ 建立新的功能分支 ✅ 在功能分支上進行修改 ✅ 提交到功能分支 ✅ 透過 Pull Request 合併 --- ## 我的功能 - 提供標準化的 Git 分支命名規範 - 確保分支類型、開發者名稱和功能描述的一致性 - 協助團隊遵循最佳的 Git 工作流程 ## 何時使用我 在以下情況下使用此技能: - 建立新的 Git 分支時 - 需要確認分支命名是否符合規範 - 團隊協作需要統一的分支管理策略 - 進行 code review 時檢查分支命名 ## 分支命名規範 ### 標準格式 ``` // ``` ### 分支類型 (type) - **feat**: 新功能開發 - 例如: `feat/lip/user-authentication` - 用於: 開發全新的功能或特性 - **fix**: 錯誤修復 - 例如: `fix/lip/login-button-error` - 用於: 修復現有功能的 bug - **refactor**: 程式碼重構 - 例如: `refactor/lip/optimize-state-management` - 用於: 改善程式碼結構,但不改變功能 - **docs**: 文件更新 - 例如: `docs/lip/update-readme` - 用於: 更新專案文件、README、註解等 - **style**: 樣式調整 - 例如: `style/lip/improve-button-design` - 用於: UI/UX 改進、CSS 調整 - **test**: 測試相關 - 例如: `test/lip/add-unit-tests` - 用於: 新增或修改測試 - **chore**: 雜項任務 - 例如: `chore/lip/update-dependencies` - 用於: 依賴更新、建置配置等 ### 命名原則 1. **使用小寫字母**: 所有分支名稱使用小寫 2. **使用連字符**: 單詞之間使用 `-` 連接 3. **簡潔明確**: 功能描述應簡短但具描述性 4. **英文命名**: 統一使用英文命名 5. **避免特殊字符**: 只使用字母、數字和連字符 ### 實際範例 ```bash # ✅ 正確範例 git checkout -b feat/lip/add-language-selector git checkout -b fix/lip/fix-search-modal-crash git checkout -b refactor/lip/improve-jotai-structure git checkout -b docs/lip/update-api-documentation # ❌ 錯誤範例 git checkout -b new-feature # 缺少類型和開發者名稱 git checkout -b feat/AddFeature # 使用大寫字母 git checkout -b feat/lip/新增功能 # 使用中文 git checkout -b feat-lip-feature # 格式錯誤 ``` ## 工作流程 ### 1. 建立新分支 ```bash # 從 main 分支建立新分支 git checkout main git pull origin main git checkout -b // ``` ### 2. 開發過程 ```bash # 定期提交變更 git add . git commit -m "feat: implement user authentication" # 定期同步主分支 git fetch origin main git rebase origin/main ``` ### 3. 準備合併 ```bash # 推送分支到遠端 git push -u origin # 建立 Pull Request # 使用 GitHub/GitLab 介面建立 PR ``` ### 4. 合併後清理 ```bash # 刪除本地分支 git branch -d # 刪除遠端分支 git push origin --delete ``` ## 提交訊息規範 ### 格式 ``` :