Skill: History
Git 历史管理技能 - 重写、优化和分析历史。
核心功能
- 📊 历史分析 - 提交质量评分和问题检测
- ✏️ 历史重写 - 安全的 interactive rebase
- 🔍 智能搜索 - 多维度提交搜索
- 📸 历史快照 - 创建和恢复历史状态
- ⚠️ 异常检测 - 识别历史问题模式
快速使用
# 分析历史质量
/history analyze --depth 100
# Interactive rebase
/history rebase HEAD~10
# 搜索提交
/history search --author "john"
# 创建快照
/history snapshot pre-release
历史分析
提交质量指标
| 指标 | 说明 | 健康标准 | |------|------|---------| | 提交频率 | 每日提交次数 | 稳定,无长期中断 | | 提交粒度 | 每次提交的变更量 | 适中(<500行/次) | | 信息质量 | 提交信息规范性 | 遵循 Conventional Commits | | 原子性 | 提交的独立性 | 每个提交独立完整 |
常见问题检测
- 🚫 大体积提交(>1000行变更)
- 🚫 无意义提交信息(如"fix"、"update")
- 🚫 敏感信息泄露
- 🚫 提交信息格式不规范
- 🚫 合并提交过多
Interactive Rebase
安全操作流程
- 创建备份 - 自动创建临时分支
- 启动 rebase -
git rebase -i <base> - 编辑操作 - 选择 squash/reword/edit/drop
- 处理冲突 - 逐个解决冲突
- 完成重写 - 确认无问题后删除备份
Rebase 操作说明
| 命令 | 说明 | 使用场景 | |------|------|---------| | pick | 保留提交 | 默认操作 | | reword | 修改提交信息 | 修正拼写错误 | | squash | 合并到前一提交 | 压缩多个小提交 | | fixup | 合并但丢弃信息 | 自动化压缩 | | drop | 删除提交 | 移除无用提交 | | edit | 暂停修改 | 分割提交 |
常用 Rebase 场景
# 压缩最近 3 个提交
git rebase -i HEAD~3
# 将后两个改为 squash
# 修改历史提交信息
git rebase -i HEAD~5
# 将目标提交改为 reword
# 分割提交
git rebase -i HEAD~3
# 将目标提交改为 edit
# 然后 git reset HEAD~ && git add -p 分次提交
提交搜索
搜索维度
# 按作者搜索
git log --author="john"
# 按日期范围
git log --since="2024-01-01" --until="2024-01-31"
# 按提交信息
git log --grep="fix"
# 按文件变更
git log --follow -- path/to/file
# 按内容搜索
git log -S "function_name"
高级搜索
# 查找引入特定代码的提交
git log -p -S "deprecated_code" --all
# 查找空提交信息的提交
git log --oneline --no-merges | grep -E '^[a-f0-9]+ $'
# 查找大体积提交
git log --no-merges --format="%H %s" --stat | \
awk '/files? changed/ { if ($4 > 500) print }'
历史快照
创建快照
# 创建命名快照
git tag snapshot-pre-release-2024-01-15
# 创建分支快照
git branch backup/pre-refactor HEAD
# 使用 stash 保存工作区
git stash push -m "WIP: feature-in-progress"
恢复快照
# 恢复到标签
git reset --hard snapshot-pre-release-2024-01-15
# 恢复到分支
git reset --hard backup/pre-refactor
# 恢复 stash
git stash pop
配置
{
"history": {
"autoAnalysis": true,
"rebaseSafety": true,
"snapshotRetention": 30,
"autoBackup": true
}
}
安全警告
⚠️ 危险操作
以下操作会重写历史,已推送到远程的提交需要谨慎操作:
git rebase -i交互式变基git commit --amend修改最后提交git filter-branch历史重写git reset --hard硬重置
🔒 安全措施
- 操作前自动创建备份
- 记录操作日志
- 提供
--dry-run预览模式 - 支持一键撤销