Skip to main content

git-commit

提交变更前自动识别并排除临时/备份/日志/构建产物等不该进版本库的文件,再合理更新忽略清单(项目通用噪声→.gitignore、个人机器噪声→全局 excludesFile/.git/info/exclude),疑似密钥则拒交并报警,最后生成规范 commit message 提交。仅本地提交,不 push、不开 PR。

설치로 이동

소스 정보

저장소
lazygophers/ccplugin
최근 소스 활동
2026년 8월 15일 02:22
감지된 SKILL.md 언어
중국어
스타
4
포크
1

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
4 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
git-commit
description
提交变更前自动识别并排除临时/备份/日志/构建产物等不该进版本库的文件,再合理更新忽略清单(项目通用噪声→.gitignore、个人机器噪声→全局 excludesFile/.git/info/exclude),疑似密钥则拒交并报警,最后生成规范 commit message 提交。仅本地提交,不 push、不开 PR。
argument-hint
[commit message]
# git-commit — 干净提交 + 智能忽略 提交前先把噪声挡在版本库外,再写规范信息。核心是**排除清单 + 忽略落点决策**两件事,git 提交本身是末端。 ## 🔴 硬规(guardrail,违反即失效) 1. **不主动 push**。改做什么:只 `add` + `commit`,推送需用户显式指令后再执行。 2. **疑似密钥/凭证一律不提交**。改做什么:命中即 🔴 STOP 报警并列出文件,提示用户 rotate 凭证 + 视情况清史(忽略只挡未追踪,已泄露的不会因为忽略而消失)。检测清单见 [references/secrets-and-cleanup.md](references/secrets-and-cleanup.md)。 ## 正向配方(原否定项改写) - 删除已追踪文件(`git rm --cached`)前,先 `git rm -n --cached` dry-run 出清单,报给用户确认后再执行——该改动会传播到协作者工作区。 - 逐个 `git add <path>` 添加,路径取自上一步 `git status --porcelain` 的输出,避免噪声与密钥被一并裹挟进暂存区。 ## 工作流 ### 1. 看改动 ```bash git status --porcelain git diff --stat # 已追踪改动量 ``` **完成判据**:已拿到本次全部改动的文件清单(含新增/修改/删除)与已追踪改动的行数统计,可据此逐项分类。 ### 2. 分类:应提交 vs 噪声 逐个文件归类。高频噪声/保留清单/落点判据的完整分类表**唯一真值源**见 [references/noise-and-ignore.md](references/noise-and-ignore.md)(§1 噪声分类、§2 应保留的锁文件与元文件、§3 忽略落点决策)。 **完成判据**:清单中每个文件都已归入「应提交」或「噪声(待排除)」二选一,无遗漏项;命中 §1 密钥类 pattern 的文件已单独标记转硬规 2 处理。 ### 3. 忽略落点决策(用户核心诉求) 排除的噪声要不要写忽略清单、写到哪,判据见 [references/noise-and-ignore.md](references/noise-and-ignore.md) §3。 - 追加前先 `git check-ignore -v <path>`:有输出=已被某规则忽略(附来源档),不重复加。 - 只追加命中的 pattern,不塞百行模板。 **完成判据**:每条本次新增的忽略 pattern 都已确认 `git check-ignore -v` 此前无输出(未被覆盖),且已写入 §3 判据对应的落点文件。 ### 4. 已被追踪的噪声 `.gitignore` 只管未追踪文件;已追踪的需从索引移除(**必带 `--cached`**,否则删本地文件): ```bash git rm -n --cached <path> # dry-run 预演,列清单待用户确认(见正向配方) git rm --cached <path> # 单文件;目录加 -r # 再把 pattern 写入对应忽略落点 ``` **完成判据**:本次判定为「已追踪噪声」的每个文件,索引移除清单均已经用户确认;确认后已实际执行 `git rm --cached` 且对应忽略 pattern 已落盘。 ### 5. 暂存 + 提交 ```bash git diff --cached | grep -nE -- '-----BEGIN [A-Z ]*PRIVATE KEY-----|AKIA[0-9A-Z]{16}|ghp_|glpat-|sk-(ant-|proj-)?' # 密钥预扫,命中 STOP git add <应提交项...> # 逐个加(见正向配方) git diff --cached --quiet && echo "无暂存改动,不空提交" # 防空提交 git commit -m "<type>(<scope>): <subject>" ``` commit message:**用户已在入参给出 message → 直接采用,不再自造**;未给才自动生成——`feat/fix/docs/refactor/chore/test/perf/build/ci` + 祈使句主题,**先 `git log --oneline -20` 采样项目风格再写**(本项目实测:type/scope 用英文、subject 用中文,如 `feat(trellisx): 异步等待...`)。规范细则见 [references/secrets-and-cleanup.md](references/secrets-and-cleanup.md) §message。 **完成判据**:密钥预扫命令已跑且无命中(或命中已按硬规 2 处置并中止);`git commit` 已成功返回新 commit hash,或已明确报告「无可提交内容」。 ## 失败处理(触发条件 → 一线修复 → 仍失败兜底) | 触发条件 | 一线修复 | 仍失败兜底 | | --- | --- | --- | | 命中疑似密钥 | 🔴 STOP,列文件报警,`git restore --staged <file>` 移出 | 已追踪 → 提示密钥已入历史,须 rotate + `git filter-repo` 清史(不代执行) | | `git add` 报路径不存在/特殊字符 | 用 `--` 分隔 + 引号:`git add -- '<path>'` | 逐文件 add,跳过报错项并列出 | | 无实质改动(全是噪声) | 报「无可提交内容,已更新忽略清单」,不空提交 | 用户坚持 → `--allow-empty` 需显式要求 | | pre-commit hook 拦截失败 | 读 hook 输出,修根因(lint/format)后重提 | 修不动 → 报原文,`--no-verify` 仅在用户明示时使用 | | 大文件(>50MB)误入暂存 | 提示 Git LFS(`git lfs track`)或移出 | 用户坚持 → 警告仓库膨胀不可逆后再交 | | 整文件虚假 diff(CRLF/mode) | `.gitattributes` `* text=auto` / `core.fileMode false` | 确认非真内容改动则不提交该项 | ## 诚实边界 - 只挡**未追踪**噪声与新增忽略;已在历史里的密钥/大文件本 skill 不清史(需用户跑 `git filter-repo`)。 - 噪声 pattern 是高频项非穷尽,冷门产物目录需用户补充判断。 - 密钥检测是启发式(文件名 + 内容线索),可能漏报/误报;精确规则以 gitleaks/GitHub secret-scanning 为准。 - 不改 commit 历史(不 amend/rebase),要改历史走 git-rebase 或用户显式指令。
GitHub에서 보기