git-commit

git-commit

熱門

執行 git commit,包含 Conventional Commit 訊息分析、智慧暫存與訊息產生。當使用者要求提交變更、建立 git commit 或提及 "/commit" 時使用。支援:(1) 從變更自動偵測類型與範圍,(2) 從 diff 產生 Conventional Commit 訊息,(3) 互動式提交,可覆寫類型/範圍/描述,(4) 智慧檔案暫存以進行邏輯分組

3.5萬星標
4464分支
更新於 2026/6/21
SKILL.md
readonlyread-only
name
git-commit
description

執行 git commit,包含 Conventional Commit 訊息分析、智慧暫存與訊息產生。當使用者要求提交變更、建立 git commit 或提及 "/commit" 時使用。支援:(1) 從變更自動偵測類型與範圍,(2) 從 diff 產生 Conventional Commit 訊息,(3) 互動式提交,可覆寫類型/範圍/描述,(4) 智慧檔案暫存以進行邏輯分組

Git Commit with Conventional Commits

概述

使用 Conventional Commits 規範建立標準化、語義化的 git 提交。分析實際 diff 以決定適當的類型、範圍與訊息。

Conventional Commit 格式

<類型>[可選範圍]: <描述>

[可選正文]

[可選頁尾]

提交類型

類型 用途
feat 新功能
fix 錯誤修正
docs 僅文件
style 格式/風格(無邏輯變更)
refactor 程式碼重構(無功能/錯誤修正)
perf 效能改善
test 新增/更新測試
build 建置系統/相依性
ci CI/設定變更
chore 維護/雜項
revert 還原提交

重大變更

# 類型/範圍後加驚嘆號
feat!: 移除已棄用的端點

# BREAKING CHANGE 頁尾
feat: 允許設定檔擴充其他設定檔

BREAKING CHANGE: `extends` 鍵的行為已變更

工作流程

1. 分析 Diff

# 若檔案已暫存,使用暫存 diff
git diff --staged

# 若無暫存,使用工作目錄 diff
git diff

# 同時檢查狀態
git status --porcelain

2. 暫存檔案(如有需要)

若無暫存或想以不同方式分組變更:

# 暫存特定檔案
git add path/to/file1 path/to/file2

# 依模式暫存
git add *.test.*
git add src/components/*

# 互動式暫存
git add -p

絕不提交機密資訊(.env、credentials.json、私鑰)。

3. 產生提交訊息

分析 diff 以決定:

  • 類型:這是哪種變更?
  • 範圍:影響哪個區域/模組?
  • 描述:一行摘要變更內容(現在式、祈使語氣、少於 72 字元)

4. 執行提交

# 單行
git commit -m "<類型>[範圍]: <描述>"

# 多行含正文/頁尾
git commit -m "$(cat <<'EOF'
<類型>[範圍]: <描述>

<可選正文>

<可選頁尾>
EOF
)"

最佳實務

  • 每次提交一個邏輯變更
  • 現在式:"add" 而非 "added"
  • 祈使語氣:"fix bug" 而非 "fixes bug"
  • 參考議題:Closes #123Refs #456
  • 描述保持在 72 字元內

Git 安全協定

  • 絕不更新 git config
  • 未經明確要求,絕不執行破壞性指令(--force、hard reset)
  • 除非使用者要求,絕不跳過 hooks(--no-verify)
  • 絕不強制推送至 main/master
  • 若因 hooks 導致提交失敗,修正後建立新提交(不修改舊提交)