Git 版本控制规范 (Git Version Control)
定位:统一所有项目的 Git 分支命名、提交规范、Skill 配置与操作流程。
分支命名
| 规则 | 说明 |
|---|---|
| 默认分支 | 所有仓库统一使用 main,禁止使用 master |
| 功能分支 | feat/<描述>,如 feat/login-page |
| 修复分支 | fix/<描述>,如 fix/memory-leak |
从 master 迁移到 main
如果仓库仍在使用 master,按以下步骤迁移:
# 1. 确认当前状态(无未提交改动,本地已同步远程)
git status
git push origin master
# 2. 本地重命名分支
git branch -m master main
# 3. 推送新分支到远程
git push -u origin main
# 4. 去 GitHub Settings → General 将默认分支改为 main
# 5. 删除远程旧分支
git push origin --delete master
提交规范
格式
采用 Conventional Commits 标准:
<type>(<scope>): <subject>
| Type | 含义 | 示例 |
|---|---|---|
| feat | 新功能 | feat(auth): 添加二维码登录 |
| fix | 修复 | fix(crawler): 修复文章采集超时 |
| docs | 文档 | docs: 更新 README 项目说明 |
| chore | 杂项 | chore(deps): 更新依赖版本 |
| refactor | 重构 | refactor(api): 统一响应格式 |
| style | 格式 | style: 修正代码缩进 |
| test | 测试 | test: 添加爬虫单元测试 |
规则
- 必须使用简体中文撰写
subject(type(scope)保持英文,如feat(auth): 添加二维码登录) scope按模块/目录名推断,可选- 一次提交聚焦一个主题,避免混入无关改动
推送流程
标准操作
# 1. 查看变更
git status
# 2. 暂存所有变更
git add -A
# 3. 提交(符合规范格式)
git commit -m "feat(crawl): 新增保险产品监控任务"
# 4. 推送到远程
git push origin main
安全红线
| 规则 | 说明 |
|---|---|
| 禁止强制推送 | 绝不使用 git push --force,除非用户显式确认 |
| 禁止提交敏感文件 | .env、*.pem、密钥文件必须加入 .gitignore |
| 禁止提交构建产物 | node_modules/、venv/、__pycache__/、dist/、.output/ |
| 推送前确认 | 快速扫一眼 git status 确认无意外文件 |
.gitignore 模板
每个项目根目录必须具备 .gitignore,至少包含:
# Python
__pycache__/
*.py[cod]
venv/
.venv/
# Node.js
node_modules/
# 环境变量
.env
.env.local
# IDE
.idea/
.vscode/
# OS
.DS_Store
Thumbs.db
根据项目技术栈添加额外规则(如 SQLite *.db、Electron out/、Nuxt .output/ 等)。
Git Skill 统一
所有项目使用统一的 /.codebuddy/skills/git/SKILL.md。统一采用纯 AI 驱动方式:Skill 触发时,CodeBuddy AI 直接读取 git diff 理解代码变更内容,生成具体的、有意义的提交信息(而非 Python 脚本的固定模板)。
不再使用 Python 脚本(scripts/main.py)。过去 5 个项目依赖 Python 脚本生成提交信息,但脚本只能做正则匹配,产出的是泛泛的描述(如"修复代码问题"、"更新功能实现")。现已全部删除脚本,改为纯 AI 方式。
标准模板
---
name: git
description: Git 提交与推送。提交本地变更并推送到 GitHub。触发词:git、推送代码、push、提交
triggers:
- "git"
- "推送代码"
- "push"
- "提交"
- "commit"
allowed-tools:
- "Read"
- "Write"
- "Bash"
- "Edit"
dependencies:
- "git>=2.0"
---
# Git 提交与推送
## 1. 角色与目标
仓库 `<本地路径>` 的 Git 提交与推送助手。远程仓库:`<GitHub URL>`,分支:`main`。
## 2. 执行 SOP
1. `git status` 检查变更
2. 若无变更,输出"工作区干净,无需提交"并结束
3. `git add -A`,快速确认无意外文件
4. `git commit -m "<提交信息>"`(见第 3 节)
5. `git push origin main`
## 3. 提交信息规范
根据变更类型使用前缀,**subject 必须使用简体中文**:
- `feat:` —— 新功能(如 `feat: 添加二维码登录验证流程`)
- `fix:` —— 修复(如 `fix: 修复文章列表空指针异常`)
- `docs:` —— 文档变更
- `chore:` —— 杂项(配置、依赖等)
- `refactor:` —— 重构
## 4. 安全规则
- 禁止 `--force` 推送,除非用户显式确认
- 禁止提交 `node_modules/`、`venv/`、`__pycache__/`、`.env` 等
- 提交前确认无意外文件
注意: Skill 文件中的
<本地路径>和<GitHub URL>需替换为项目实际值。
现有项目 Skill 适配
| 项目 | Skill 路径 | 状态 |
|---|---|---|
d:/product/wechat/.codebuddy/skills/git/SKILL.md |
OK | |
| AIasMe | d:/product/AIasMe/.codebuddy/skills/git/SKILL.md |
OK |
| Broker | d:/product/Broker/.codebuddy/skills/git/SKILL.md |
OK |
| HankKnowledge | d:/myKnowledge/HankKnowledge/.codebuddy/skills/git/SKILL.md |
OK |
| Insurance | d:/myKnowledge/Insurance/.codebuddy/skills/git/SKILL.md |
OK |
| mrcertain | d:/myKnowledge/mrcertain/.codebuddy/skills/git/SKILL.md |
OK |
所有项目已于 2025-05-25 统一到纯 AI 方式,Python 脚本均已删除。
常见问题
| 问题 | 解法 |
|---|---|
| 推送被拒绝(远程有新提交) | git pull --rebase origin main 后重新 push |
误提交了 .env 文件 |
git rm --cached .env,确认 .gitignore 包含该文件 |
| 忘记改默认分支导致删不掉 master | 先去 GitHub Settings → General 改默认分支为 main |
| 不确定当前分支 | git branch --show-current |
沉淀协议
| 触发条件 | 行动 |
|---|---|
| 新项目初始化 | 创建 .gitignore + 从本文件标准模板复制 SKILL.md,确认分支为 main |
| master → main 迁移 | 按本文第 2 节步骤操作 |
| 新增提交类型 | 更新本文 Type 表格 |
| 安全红线被触发 | 在 L2_sop 沉淀防御规则 |