为什么清理本地提交
杂乱的 WIP 提交(fix、wip、really fix this time)增加评审难度并污染仓库历史。交互式 rebase 让你在安全分享前重写仅存在于本地的提交。
何时使用
- 多个小 WIP 提交构成一个逻辑变更
- 想重排提交以讲清故事
- 需要修正较早提交中的拼写错误
- 推送前想编辑提交信息
步骤示例
git log --oneline -n 5
git rebase -i origin/main
# 在编辑器里把 pick 改为 squash / reword / edit / drop
git push --force-with-lease
安全规则
只重写尚未分享的提交。对已推送分支使用 --force-with-lease,并确认没有他人基于该分支工作。rebase 冲突时逐提交解决并继续,不要用 --abort 丢失工作。
验证历史
预期结果:git log --oneline 只显示预期的逻辑提交,每个提交都能独立构建和通过测试,git diff origin/main 的最终内容与整理前一致。用测试和最终差异确认,随后用 --force-with-lease 推送。