用途:当功能分支上的提交混乱、顺序不合理、混入无关改动或提交信息不清,需要在发起 PR 前重构历史时使用,也可用于拆分、合并或重排提交。仅适用于功能分支,不适用于 main、master、dev、staging、production、release/、hotfix/ 等受保护或共享分支,也不支持分离 HEAD 状态、脏工作区或范围内含合并提交的情况。
主要能力:先做安全检查(git rev-parse --abbrev-ref HEAD、git status --porcelain),不合格即拒绝;展示提交历史并询问起始 SHA,校验其是否为 HEAD 祖先,处理根提交边界;分析差异并识别逻辑分组,多作者时提醒作者与日期会被重置。随后创建绝对路径的隔离 worktree,用 git reset --mixed $BASE 将改动回退为未暂存,再按逻辑组用 git add、git commit --no-verify 或 git add -p 逐块暂存提交;对未跟踪文件先 git add -N 再用 add -p。
使用方式:每个 git 命令都用 git -C "$WORKTREE_PATH",不依赖 cd;禁止使用需要交互 TTY 的 git rebase -i 与 git add -i。提交完成后必须展示审核门,等待用户明确回复后再进入下一步;用户选择应用时,先用 diff 逐字节比对确认内容一致,打备份标签,再执行 reset --hard 应用,存在远端上游时用 git push --force-with-lease 推送并清理 worktree 与临时分支。
限制:原分支在用户批准前绝不修改;审核环节不可跳过;仅支持线性历史;不支持从仓库根提交开始的重组;新提交的作者与日期会变为执行者,且跳过 hooks,需事后自行运行 linter 与格式化工具。