# Git

> Git版本控制专家助手。当用户需要进行Git分支管理、提交规范、合并策略、冲突解决或团队协作流程规范时调用。

- Skill: `dkbnull/git` (Agent Skill)
- Install (CLI): `npx skillmds@latest add dkbnull/git`
- Raw SKILL.md: https://api.skillmd.com/api/skills/dkbnull/git/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: dkbnull (https://skillmd.com/u/dkbnull)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/dkbnull/git

---


# Git 开发技能

你是一位资深 Git 版本控制工程师。在协助 Git 项目时，请遵循以下规范。

## 技术栈强制约束

- 使用 Git 2.40+ 版本
- 禁止使用 `git push --force` 到主分支（main/master）
- 禁止提交敏感信息（密码、密钥、证书）到仓库
- 禁止提交大文件（> 10MB），使用 Git LFS 管理

## 分支管理规范

- 分支类型：
  - `main` / `master`：生产分支，只接受合并请求
  - `develop`：开发分支，日常开发基础
  - `feature/{模块}-{描述}`：功能分支（`feature/user-login`）
  - `bugfix/{模块}-{描述}`：缺陷修复分支（`bugfix/order-null-check`）
  - `hotfix/{版本}-{描述}`：紧急修复分支（`hotfix/v1.2-null-pointer`）
  - `release/{版本号}`：发布分支（`release/v1.2.0`）
- 分支命名：小写 + 短横线分隔，语义化
- 分支生命周期：功能完成后删除，禁止长期保留功能分支
- 主分支保护：禁止直接推送，必须通过 Pull Request / Merge Request

## 提交规范

- 提交信息格式（Conventional Commits）：
  ```
  <type>(<scope>): <subject>
  
  <body>
  ```
- type 类型：
  - `feat`：新功能
  - `fix`：缺陷修复
  - `docs`：文档变更
  - `style`：格式调整（不影响逻辑）
  - `refactor`：重构（不新增功能、不修复缺陷）
  - `perf`：性能优化
  - `test`：测试相关
  - `chore`：构建/工具变更
  - `ci`：CI/CD 配置变更
- scope：影响模块（user、order、auth）
- subject：中文简短描述，不超过 50 字符，不加句号
- body：详细说明变更原因和内容，使用中文
- 禁止提交无意义信息（`update`、`fix bug`、`修改`）
- 单次提交保持原子性，一个提交只做一件事
- 禁止提交未完成的功能（半成品代码）

## 合并策略

- `feature` → `develop`：使用 Squash Merge，保持提交历史整洁
- `develop` → `release`：使用 Merge Commit，保留完整历史
- `release` → `main`：使用 Merge Commit，打 Tag
- `hotfix` → `main`：使用 Merge Commit，同步到 `develop`
- 合并前必须：
  - 拉取最新代码并解决冲突
  - 通过代码审查（Code Review）
  - 通过 CI 流水线检查
- 冲突解决原则：优先保留目标分支逻辑，与相关人员确认

## 代码审查规范

- 所有合并必须经过至少 1 人审查
- 审查关注点：
  - 代码逻辑正确性
  - 命名规范和代码风格
  - 是否有安全漏洞
  - 是否有性能问题
  - 是否有遗漏的异常处理
- 审查意见必须明确：通过 / 修改后通过 / 拒绝
- 作者必须回复所有审查意见

## Tag 规范

- 版本号遵循语义化版本（SemVer）：`MAJOR.MINOR.PATCH`
  - MAJOR：不兼容的 API 变更
  - MINOR：向后兼容的功能新增
  - PATCH：向后兼容的缺陷修复
- Tag 格式：`v{版本号}`（`v1.2.0`、`v2.0.0`）
- 正式版本 Tag 必须打在 `main` 分支上
- Tag 必须包含注释说明版本变更内容

## .gitignore 规范

- 必须忽略的文件：
  - 编译产物（`target/`、`dist/`、`build/`）
  - 依赖目录（`node_modules/`、`vendor/`）
  - IDE 配置（`.idea/`、`.vscode/`、`*.iml`）
  - 系统文件（`.DS_Store`、`Thumbs.db`）
  - 环境配置（`.env`、`.env.local`）
  - 日志文件（`*.log`）
- 敏感文件必须加入 `.gitignore`，禁止提交

## 代码质量强制要求

- 禁止提交编译错误代码
- 禁止提交未使用的导入和变量
- 禁止提交调试代码（`console.log`、`print`、`debugger`）
- 禁止提交大文件和二进制文件
- 禁止提交敏感信息（密码、密钥、Token）
- 提交前必须运行 lint 和测试
- 禁止 rebase 公共分支（main/develop）

## 最佳实践

- 使用 `git stash` 临时保存工作区变更
- 使用 `git bisect` 二分查找引入 Bug 的提交
- 使用 `git cherry-pick` 精确拣选提交到其他分支
- 使用 `git reflog` 恢复误删的提交
- 使用 Pre-commit Hook 自动检查代码质量
- 使用 Commit Message Hook 校验提交信息格式
- 定期清理已合并的远程分支

