逐提交执行命令
在每条提交重放完成后执行指定命令,例如运行测试;任一失败就暂停在对应提交上。它适合在整理分支时确认每一步都是可用状态,也常用来找出「哪一条提交把测试弄挂了」。
基本信息
| 用途 | 逐提交执行命令,定位出问题的那一步 |
|---|---|
| 语法 | git rebase -i --exec '命令' <基点> |
| 等价写法 | 在待办清单里给每条提交追加一行执行指令 |
| 执行时机 | 每条提交重放完成之后立即执行 |
| 失败处理 | 暂停在该提交,修复后继续或中止整个变基 |
典型使用场景
- 清理功能分支时确认每一步都能构建通过
- 排查哪条提交引入了测试失败
- 为后续二分排查保证中间状态都可用
- 整理历史时同步跑一次格式检查
- 把质量验证固化进历史整理流程
常用示例
常用示例
git rebase --exec 'npm test --silent' origin/main # 每条提交后跑一次测试
git rebase -i --exec 'cargo test -q' HEAD~5 # 对最近五条提交逐条验证
git rebase --continue # 修好失败的提交后继续
git rebase --abort # 放弃整个操作
git log --oneline -6 # 复核整理后的历史过程信息与状态
| 提示 | 含义 |
|---|---|
| 正在执行命令 | 对当前提交运行验证命令 |
| 命令失败并暂停 | 停在具体提交上,便于定位 |
| 成功则继续 | 自动进入下一条提交 |
| 中止整个流程 | 历史回到操作前状态 |
命令会在每个中间状态运行,因此必须可重复且不依赖外部环境;依赖本地临时文件或未启动服务的检查会误报失败。
逐条执行会让整个操作耗时成倍增加,先确认测试套件本身足够快且稳定,再用于日常整理。
验证命令失败时不会自动改动历史,仓库处于变基中间状态:要么修好当前提交并继续,要么中止让一切回到操作之前。
想验证的只是编译是否通过时,用最小的构建命令即可;把完整测试套件放进去,等待时间往往超过手工分段验证。