Files
gh-mileschou-claude-marketp…/commands/commit-push-all.md
2025-11-30 08:40:29 +08:00

3.4 KiB
Raw Permalink Blame History

description, allowed-tools, model
description allowed-tools model
Commit and Push All Bash(git add:*),Bash(git branch:*),Bash(git diff:*),Bash(git log:*),Bash(git push:*),Bash(git status:*),Bash(git symbolic-ref:*) 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產生提交訊息

根據記憶中的提交訊息格式偏好產生提交訊息,若無特別指示則使用以下格式:

基本格式

<簡短描述所有變更>

- <type>: <變更描述>
- <type>: <變更描述>
- <type>: <變更描述>
  • 標題:簡單描述這次提交的整體內容(不使用 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

git commit -m <提交訊息>

3-2. 推送

推送到使用者選擇的分支:

git push -u origin <分支名稱>

注意事項

提交特性

  • 全部提交:此指令會無條件提交工作目錄中的所有變更
  • 不考慮原子性:即使包含多種類型的修改,也會合併成單一提交
  • 提交訊息應盡可能清楚描述所有變更內容

錯誤處理

  • 執行指令偶爾會出現 .git/index.lock 鎖定的錯誤,當指令提示詞正常啟動後,可以忽略這個錯誤
  • 遇到其他任何錯誤時立即停止,回報錯誤訊息給使用者