智能提交
自动生成Conventional Commits格式的提交信息,告别手动编写
分支管理
创建、切换、合并、删除分支,校验命名规范
Rebase辅助
交互式rebase指导,智能建议squash和fixup操作
一、Git工作流Skill的设计理念
Git是现代软件开发中不可或缺的版本控制工具,但其命令行操作复杂、工作流规范难以统一、commit message质量参差不齐等问题长期困扰着开发团队。通过创建Git工作流Skill,可以将团队的Git操作标准化、自动化,减少手动操作的错误,大幅提高代码提交质量和团队协作效率。
一个设计良好的Git工作流Skill应当涵盖完整的开发周期:从创建特性分支到提交代码,从合并回主分支到清理已合并分支,每个环节都要有明确的规范和自动化辅助。Skill的核心价值在于将团队约定固化到工具中,让每一位开发者都能无门槛地遵循最佳实践。
核心目标:标准化团队的Git操作流程、减少手动操作的错误、提高代码提交质量、降低新成员的上手成本。
二、自动生成commit message
规范的commit message是项目维护的基石。通过Git MCP获取staged diff,分析变更内容,可以自动生成符合Conventional Commits规范的提交信息。这不仅能确保提交信息格式统一,还能让开发者专注于代码本身而非措辞。
Skill通过读取 git diff --staged 的输出,分析变更文件的类型、范围和内容,自动推断出合适的commit类型(feat/fix/chore/docs等)和作用域,并生成简洁准确的描述信息。同时支持自定义提交模板,满足不同项目的特殊要求。
# Git提交Skill配置示例
- name: 智能提交
command: commit
prompt: |
分析以下Git变更,生成规范的commit message:
{{FILE:diff_staged.txt}}
请用Conventional Commits格式:
<type>(<scope>): <description>
<body>
<footer>
变更类型:feat/fix/docs/style/refactor/perf/test/chore
要求:描述简洁准确,正文可包含动机和对比
最佳实践:建议在template中要求AI分析变更所影响的模块(scope),并检查commit message是否包含Breaking Change标记和相关的issue编号,以便生成完整的变更日志(CHANGELOG)。
三、分支管理自动化
分支管理是Git工作流的核心环节。Skill可以自动化处理分支的创建、切换、合并和清理工作,同时校验分支命名是否遵循团队规范。创建特性分支时自动关联issue编号,合并后自动删除远程分支,这些重复性操作交给Skill处理可以节省大量时间。
分支命名规范校验是一个容易被忽略但非常实用的功能。Skill可以在创建分支时自动检查名称是否符合 feature/、bugfix/、hotfix/ 等前缀要求,并提示正确的命名格式,从源头保证分支管理的整洁性。
# 分支管理Skill配置示例
- name: 创建特性分支
command: branch
prompt: |
创建新的Git特性分支。
分支名:{{branch_name}}
校验规则:
1. 必须以 feature/bugfix/hotfix/release 开头
2. 后跟 /issue编号-简短描述
3. 使用连字符分隔单词,全部小写
步骤:
1. 从最新的main分支创建
2. git checkout -b {{branch_name}}
3. 推送到远程:git push -u origin {{branch_name}}
4. 确认当前在正确的分支上
四、合并冲突解决辅助
合并冲突是Git使用中最令人头疼的问题之一。Skill可以分析冲突文件的内容,理解双方变更的意图,提供合理的合并策略建议。它不仅能指出冲突的位置,还能结合上下文解释为什么会产生冲突,帮助开发者做出正确的合并决策。
对于复杂的冲突场景,Skill可以列出所有冲突文件,逐一分析每处冲突的双方变更内容,推荐保留方案(保留当前分支、保留合并分支、手动合并),甚至给出代码层面的合并建议。这大大降低了解决冲突的心智负担。
# 冲突解决Skill工作流程
1. 检测冲突: git status --porcelain
2. 列出冲突文件: git diff --name-only --diff-filter=U
3. 逐个分析冲突块:
- 读取 <<<<<<< HEAD 到 ======= 的内容(当前分支)
- 读取 ======= 到 >>>>>>> 的内容(合并分支)
- 分析变更意图和上下文
4. 推荐合并策略:
- 保留当前分支变更
- 保留合并分支变更
- 手动整合两个变更
5. 标记已解决: git add <file>
五、交互式rebase指导
交互式rebase(rebase -i)是Git的高级功能,用于整理提交历史。但它的操作方式和命令选项对初学者来说相当复杂。Skill可以分析当前分支的提交历史,给出合理的squash和fixup建议,帮助开发者将多个WIP提交合并成清晰的功能提交。
在rebase过程中如果遇到冲突,Skill可以自动暂停rebase操作,引导开发者解决冲突后继续执行 git rebase --continue。完成rebase后,还会验证提交历史是否符合预期,检查是否有丢失的变更。
# 交互式rebase辅助配置示例
- name: 整理提交历史
command: rebase
prompt: |
分析当前分支的提交历史,建议rebase操作。
当前分支: {{branch_name}}
基础分支: main
提交历史分析:
{{FILE:git_log_output.txt}}
建议策略:
1. 同类变更的提交合并(squash)
2. "fixup!" 和 "WIP" 提交自动fixup
3. 保留有意义的独立提交
4. 确保每个提交都能通过测试
生成rebase指令:
git rebase -i main
并在编辑器中给出pick/squash/fixup建议
> 一次rebase的最佳实践:确保每个提交都是一个"原子提交"——只做一件事,且做好一件事。这样在git bisect定位问题时,才能精准找到引入或修复bug的提交。
六、实际使用示例
以下是一个完整的Git工作流Skill使用场景,展示了从创建分支到合并回主分支的完整流程:
# 场景:实现用户登录功能
# 1. 创建特性分支
$ /branch feature-login
→ 从main创建分支 feature/user-login-142
→ 推送并跟踪远端分支
→ 当前在 feature/user-login-142 分支
# 2. 开发完成后一键提交
$ git add -A
$ /commit
→ 分析变更: 新增 login.py、login_test.py、修改 auth.py
→ 推断类型: feat
→ 生成message: feat(auth): 添加用户登录功能
- 实现邮箱密码登录验证
- 添加JWT token生成与刷新
- 新增登录表单前端组件
→ 确认提交? [Y/n]: Y
→ 提交成功
# 3. 继续开发并整理历史
$ /commit
→ 生成: fix(auth): 修复登录token过期判断逻辑
$ /rebase
→ 分析: 当前分支有3个提交,2个feat可合并
→ 建议: 将 2 个feat提交合并
→ 执行rebase后:
- feat(auth): 添加用户登录功能
- fix(auth): 修复登录token过期判断逻辑
# 4. 合并回主分支
$ /merge-into main
→ 切换到main并拉取最新代码
→ 合并分支 feature/user-login-142
→ 无冲突,合并成功
→ 推送 main 到远端
→ 清理: 删除本地和远端特性分支
提示:上述示例中的 /command 格式为Slash Command风格,在Claude Code中可以通过配置skills.json将Git工作流Skill注册为斜杠命令。你也可以将Skill绑定到特定的Trigger Pattern,例如当检测到staged changes时自动提示 /commit。
七、Skill集成与配置
将Git工作流Skill集成到Claude Code中,需要在项目的 .claude/settings.json 中注册Skill配置,并定义好所有的命令、触发条件和提示词模板。一个完整的Git工作流Skill通常包含以下几个核心命令:
| 命令 |
功能 |
使用频率 |
| /commit |
自动生成并提交规范的commit message |
极高 |
| /branch |
创建符合规范的新分支 |
高 |
| /merge-into |
合并分支并处理冲突 |
中 |
| /rebase |
交互式rebase辅助和提交历史整理 |
中 |
| /log |
可视化提交历史和分支关系 |
低 |
在配置Skill时,需要注意提示词(prompt)的设计。好的提示词应当包含清晰的执行步骤、错误处理逻辑和用户确认机制。特别是在涉及git push等远程操作时,务必加入用户确认环节,防止误操作。
注意:Git操作具有不可逆性(特别是push --force和reset --hard),在设计Skill时必须加入安全检查机制。建议在执行风险操作前先展示将要执行的命令列表,等待用户确认后再执行。此外,对于合并操作,务必先在本地处理冲突并验证通过后再推送。
八、高级技巧与扩展
Git工作流Skill还可以进一步扩展,集成更多实用功能:
- 自动生成CHANGELOG:基于Conventional Commits的提交历史,自动生成格式规范的变更日志文件
- Code Review辅助:在创建PR时自动生成变更摘要,列出所有修改的文件和关键变更点
- Git Hooks管理:自动配置和更新项目的pre-commit hooks(如代码格式化、lint检查)
- 多仓库操作:同时管理多个Git仓库的同步提交和发布
- 版本标签管理:自动创建语义化版本标签,并生成对应的release notes
- CI/CD集成:在提交后自动触发CI流水线,并反馈构建状态
# 高级:自动化版本发布Skill
- name: 发布版本
command: release
prompt: |
基于main分支的最新提交历史发布新版本。
步骤:
1. 检查最新提交: git log --oneline -5
2. 解析Conventional Commits确定版本号:
- fix → patch版本
- feat → minor版本
- 含BREAKING CHANGE → major版本
3. 创建标签: git tag v{{version}}
4. 生成release notes
5. 推送标签: git push --tags
6. 触发CI发布流水线
九、核心要点总结
1. 标准化是核心:将团队的Git操作规范固化到Skill中,确保每位开发者遵循相同的实践标准。
2. 安全优先:所有风险操作(push --force、reset、delete branch)必须经过用户确认。
3. 上下文感知:利用MCP获取Git仓库的完整上下文(staged diff、log、status),让AI做出更准确的决策。
4. 渐进式自动化:从最常用的commit message生成开始,逐步扩展到分支管理、rebase、冲突解决等高级场景。
5. 可定制性:提供模板化配置,让不同团队可以根据自身的Git工作流定制Skill行为。
十、进一步思考
Git工作流Skill的未来发展方向是成为一个真正的"开发助手",而不仅仅是一个命令执行器。它可以学习开发者的操作习惯,预测下一步操作,主动提供建议。例如,在检测到staged changes时自动提示 "检测到变更,是否要执行/commit?";在切换分支时提醒 "当前有未提交的变更,是否要stash?"。
更进一步的,Skill可以结合项目管理工具(如Jira、Linear),自动将commit信息关联到任务卡片,更新任务状态。也可以结合CI/CD系统,在合并PR时自动检查构建状态,只有所有检查通过才允许合并。当这些环节全部打通后,Git工作流Skill就成为了一个真正的"开发工作台",大幅提升开发效率和代码质量。