--- description: Commit and Push All allowed-tools: Bash(git add:*),Bash(git branch:*),Bash(git diff:*),Bash(git log:*),Bash(git push:*),Bash(git status:*),Bash(git symbolic-ref:*) model: claude-haiku-4-5 --- 無條件將所有變更提交並推送到遠端儲存庫,不考慮提交原子性。 ## 工作目錄資訊 將所有檔案加入暫存區: ``` # 執行 git add . !`git add .` ``` 檔案變更與暫存狀態的清單: ``` !`git status --short` ``` 檔案變更的詳細內容: ``` !`git diff --cached` ``` 最近五筆提交訊息: ``` !`git log --oneline -5` ``` 分支資訊: - **遠端主要分支**: !`git symbolic-ref refs/remotes/origin/HEAD` - **當前分支**: !`git branch --show-current` 所有分支清單: ``` # 本地分支 !`git branch` # 遠端分支 !`git branch -r` ``` ## 流程 ### 步驟 1:確認目標分支 分析「工作目錄資訊」中收集到的變更狀態,總結所有變更內容。 使用 AskUserQuestion 工具詢問目標推送分支: **問題**:要推送到哪個分支? - 選項:`[當前分支: main]` / `[branch1]` / `[branch2]` 分支選項建議: - **當前分支** - 在目前的分支上提交並推送 - **其他可能的分支** - 根據修改內容推測相關的分支名稱 若使用者手動輸入的分支名稱不存在,則建立新分支。 **注意事項**: - 除非必要,否則不要提供「切換到新的分支」的選項 - **IMPORTANT**:若使用者沒有回答或回答空白選項,則必須重新確認 ### 步驟 2:產生提交訊息 根據記憶中的提交訊息格式偏好產生提交訊息,若無特別指示則使用以下格式: #### 基本格式 ``` <簡短描述所有變更> - : <變更描述> - : <變更描述> - : <變更描述> ``` - **標題**:簡單描述這次提交的整體內容(不使用 Conventional Commits 前綴) - **內容**:使用 Conventional Commits 類型標示各項變更 #### Conventional Commits 類型 - `feat`: 新功能 - `fix`: 修復問題 - `docs`: 文件更新 - `style`: 程式碼格式調整 - `refactor`: 重構 - `test`: 測試 - `chore`: 建置或輔助工具 #### 範例 **範例 1:混合類型變更** ``` 更新認證系統與文件 - feat: 新增 OAuth 登入功能 - fix: 修正驗證碼過期問題 - docs: 更新 API 文件 - test: 補充單元測試 ``` **範例 2:單一類型多項變更** ``` 完善登入驗證功能 - feat: 實作 email 驗證邏輯 - feat: 加入驗證碼過期檢查 - test: 更新相關單元測試 ``` **範例 3:簡單變更** ``` 修正登入頁面錯誤訊息顯示 - fix: 修正驗證失敗時的錯誤訊息 ``` ### 步驟 3:執行提交與推送 #### 3-1. 提交 所有檔案已在「工作目錄資訊」階段加入暫存區,使用步驟 2 產生的提交訊息執行 commit: ```bash git commit -m <提交訊息> ``` #### 3-2. 推送 推送到使用者選擇的分支: ```bash git push -u origin <分支名稱> ``` ## 注意事項 ### 提交特性 - **全部提交**:此指令會無條件提交工作目錄中的所有變更 - **不考慮原子性**:即使包含多種類型的修改,也會合併成單一提交 - 提交訊息應盡可能清楚描述所有變更內容 ### 錯誤處理 - 執行指令偶爾會出現 `.git/index.lock` 鎖定的錯誤,當指令提示詞正常啟動後,可以忽略這個錯誤 - 遇到其他任何錯誤時立即停止,回報錯誤訊息給使用者