← 中文资源

简体中文版本

用交互式 rebase 清理本地提交

在分享前用 git rebase --interactive 压缩、重排或编辑本地提交,从杂乱的 WIP 历史整理出清晰的拉取请求。

阅读英文原文

为什么清理本地提交

杂乱的 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 推送。