Git 提交消息
概述
根据暂存区变更生成单行提交消息,并匹配仓库近期的提交风格与语言。
流程
- •
确认变更范围
- •执行
git status --short。 - •若无任何变更(暂存区和工作区都干净),说明情况并停止。
- •若只有未暂存变更,询问用户是否基于未暂存变更生成消息。默认为否。
- •默认处理暂存区变更。如果用户确认,则后续流程使用
git diff而非git diff --cached。
- •执行
- •
读取变更内容
- •根据第 1 步的选择,执行
git diff --cached(暂存区)或git diff(未暂存区)。 - •优化:通过
git diff --cached --numstat或git diff --numstat统计变更行数。如果总行数超过 100 行,则后续分析使用git diff --cached --stat或git diff --stat的摘要信息,以提升效率。
- •根据第 1 步的选择,执行
- •
匹配仓库风格
- •执行
git log -5 --pretty=format:%s获取最近 5 条提交消息的主题行。 - •分析这些主题行的前缀(如
feat:、fix:、docs:)和语言风格。 - •优化(处理新仓库):如果
git log返回为空(即新仓库),则默认采用 Conventional Commits 规范(如feat:、fix:)。
- •执行
- •
起草提交消息
- •根据变更内容和仓库风格,生成一个简洁、准确的主题行。
- •优化(支持多行消息):如果变更复杂(例如,修改了多个模块或变更行数超过 100 行),在主题行之下增加一个空行和简要的正文(body),说明变更的背景、目的和主要内容。
- •如果暂存区包含多种不相关的改动,建议用户拆分提交,或给出一个能涵盖所有改动的通用消息。
- •
回复
- •输出推荐的单行或多行提交消息。
- •如果工作区有未暂存的改动而本次处理的是暂存区,可以补充一句提醒,说明未暂存的改动不会被包含在消息内。