用途
Git Workflow 是一个 Git 操作助手,定位为轻量、高频使用的工具,专注于 Git 工作流相关任务。其范围严格限定在 Git 工作流操作,明确不用于代码审查(review)、CI/CD 流水线(devops-engineer)、变更日志或发布说明(changelog-writer),也不用于编写应用代码。
主要能力
该工具通过模式(Mode)组织功能,支持以下六种模式:
- commit:从已暂存的 diff 生成符合 Conventional Commits 规范的提交信息。
- pr:从分支 diff 生成 PR 描述。
- strategy:为项目推荐分支策略。
- conflict:指导合并冲突的解决。
- archaeology <文件或函数>:分析 git 历史以理解代码。
- bisect:协助使用 git bisect 查找引入回归的提交。
若未提供参数,则显示带示例的模式菜单。
使用方式
工具通过 $ARGUMENTS 进行调度,用户传入模式名称来触发对应功能。各模式的具体步骤:
Commit 模式:运行 git diff --cached 获取暂存变更;若无暂存内容则提示先执行 git add;运行 uv run python scripts/diff-summarizer.py 处理 diff;分析确定类型、范围、主题、正文及是否为破坏性变更;参考 data/conventional-commits.json 规则;展示提交信息并询问是否提交,经批准后执行 git commit。
PR 模式:检测基础分支;运行 git log --oneline <base>..HEAD;运行 uv run python scripts/commit-parser.py;运行 git diff <base>...HEAD --stat;运行 uv run python scripts/diff-summarizer.py;生成包含标题、摘要、变更分组、测试计划和破坏性变更的 PR 描述,并询问是否创建。
Strategy 模式:分析仓库的团队规模(git shortlog -sn --all | wc -l)、发布节奏(git tag -l --sort=-creatordate | head -20)、分支数量(git branch -r | wc -l)以及 CI/CD 存在情况;参考 data/branch-strategies.json;对每种策略评分并给出推荐、对比表和迁移步骤。
Conflict 模式:运行 git diff --name-only --diff-filter=U 列出冲突文件;对每个文件读取冲突标记、分析双方意图、检查 git log --merge -p -- <file>;给出解决建议并询问是否应用;解决后提醒执行 git add 并继续合并或变基。
Archaeology 模式:解析参数为文件路径或函数名;对文件使用 git log --follow、git blame 等;对函数使用 git log -p --all -S(pickaxe 搜索)或 git log -L;分析代码引入时间、原始意图、演变过程及相关变更,呈现叙事时间线。
Bisect 模式:询问坏提交、好提交和测试命令;执行 git bisect start <bad> <good>;若有测试命令则运行 git bisect run <command>,否则手动询问每个提交的好坏;找到提交后展示 git show <hash> 并解释变更;最后执行 git bisect reset 清理。
适用场景
适用于日常 Git 工作流操作,包括撰写规范提交信息、生成 PR 描述、选择分支策略、解决合并冲突、通过历史理解代码以及定位回归提交。
限制
- 不用于代码审查、CI/CD 流水线、变更日志或发布说明,也不用于编写应用代码。
- 提交前必须获得用户批准,不得在未批准的情况下提交。
- 禁止强制推送、
reset --hard或运行破坏性 git 命令。 - 考古模式为只读,不得修改代码或历史。
- 冲突解决必须先解释双方再推荐。
- 分支策略必须考虑实际团队规模和发布节奏。
- 脚本输出 JSON 到 stdout,需程序化解析,不得使用正则。
- 若
git diff --cached为空,不得编造提交信息。 - 不生成变更日志或发布说明,应重定向到 changelog-writer。
- 参考文件一次只加载一个,不得预加载全部。
规范术语
工具使用以下规范术语:conventional commit、commit type(feat、fix、docs、style、refactor、perf、test、build、ci、chore、revert)、breaking change、scope、trunk-based、git-flow、github-flow、conflict marker、blame、archaeology、bisect、good/bad commit。
参考文件与脚本
参考文件包括 references/commit-and-pr-guide.md、references/branch-strategies.md、references/history-and-debugging.md;数据文件包括 data/conventional-commits.json、data/branch-strategies.json;脚本包括 scripts/commit-parser.py、scripts/diff-summarizer.py。