Git Smart Commit

SKILL.md

Git Smart Commit — 智慧拆分提交

將目前所有 staged / unstaged 變更,依功能邏輯分群後,逐批 git add + git commit


流程

1. 檢查變更狀態

執行以下指令取得完整變更清單:

git status --short

若沒有任何變更,告知使用者「目前沒有需要提交的變更」後結束。

接著取得所有變更的 diff 內容(用來判斷分群邏輯):

git diff
git diff --cached

2. 分析並分群

根據以下維度,將檔案變更分成多個 commit 群組,每組代表一個獨立的邏輯單元:

分群依據(優先順序)

優先級 維度 範例
1 專案腳手架 / 設定檔 package.json, vite.config.*, .gitignore, README.md, tsconfig.json
2 資料層 / config data src/data/*.js, src/constants/*, src/config/*
3 元件(按元件名稱分組) src/components/Hero.jsx + 對應測試 + 對應樣式
4 頁面 / 路由 src/pages/*, src/routes/*, src/App.jsx
5 全域樣式 src/index.css, src/styles/*, src/theme/*
6 工具 / hooks / 型別 src/utils/*, src/hooks/*, src/types/*
7 測試 __tests__/*, *.test.*, *.spec.*
8 文件 / 其他 docs/*, *.md(非 README), 其他雜項

分群規則

  • 同一元件的 JSX/TSX + CSS Module + 測試 → 歸為同一組
  • 相關的資料檔如果是為某個元件服務 → 可考慮合併或獨立,取決於變更量
  • 若某一組只有 1 個檔案且改動極小(< 5 行)→ 合併到最相關的鄰近組
  • 新增檔案用 feat,修改用 fix / refactor / style,刪除用 chore

3. 產出 Commit 計畫

在執行任何 git 操作之前,先列出計畫讓使用者確認:

📋 Commit 計畫(共 N 個 commit)

1. chore(project): 初始化專案設定與相依套件
   → package.json, vite.config.js, .gitignore

2. feat(data): 新增首頁各區塊的設定資料
   → src/data/navigation.js, src/data/hero.js, ...

3. feat(navbar): 新增 Navbar 元件(含 RWD 漢堡選單)
   → src/components/Navbar.jsx

...

確認執行?(Y/n)

使用 notify_user 工具向使用者展示計畫並等待確認。


4. 逐批執行 Commit

使用者確認後,對每一組依序執行:

git add <file1> <file2> ...
git commit -m "<type>(<scope>): <subject>"

Commit Message 格式

<type>(<scope>): <簡短描述,繁體中文>

type 對照表:

type 使用時機
feat 新增功能、元件、頁面
fix 修復 bug
style 純樣式調整(不影響邏輯)
refactor 重構(不改變行為)
chore 雜務(設定檔、腳手架、CI)
docs 文件更新
test 測試相關

scope 規則:

  • 元件:用元件名稱小寫,例如 hero, navbar, pricing
  • 資料層:data
  • 全域樣式:style
  • 專案設定:project
  • 多個範圍:用最主要的一個,不要用斜線串接

subject 規則:

  • 使用繁體中文
  • 不超過 50 字
  • 不以句號結尾
  • 用「動詞開頭」:新增、調整、修正、移除、重構

5. 確認結果

所有 commit 完成後,執行:

git log --oneline -20

將結果展示給使用者,確認所有 commit 都已正確建立。


邊界情況處理

  • 有衝突或 merge 狀態:提醒使用者先解決衝突,不執行任何操作
  • .env 或敏感檔案:提醒使用者確認是否應被 gitignore,不自動提交
  • 變更量極大(> 50 個檔案):先產出分組摘要,請使用者確認後再執行
  • 使用者已有部分 staged 變更:尊重已 staged 的狀態,將其視為一個獨立群組或合併到最相關的群組
Weekly Installs
First Seen