git rebase --root 是什么
以仓库根为基点重放整段历史:git rebase -i --root 打开包含第一提交在内的交互列表,用于整理初始提交(修正首个提交信息、合并最初几条提交)。它会改写全部提交哈希,只适合个人仓库或早期仓库。
基本信息
| 用途 | 把变基范围扩展到仓库的初始提交 |
|---|---|
| 语法 | git rebase -i --root |
| 效果 | 全部提交哈希都会变化 |
| 中止 | git rebase --abort 回到操作前状态 |
| 配合工具 | 常用 filter-repo 等历史过滤手段之后做结构整理 |
| 适用边界 | 未共享的个人仓库、早期仓库整理 |
典型使用场景
- 修正初始提交:首个提交信息写错或包含多余文件时整理。
- 合并开荒提交:把「init」阶段的碎提交压缩成一条干净历史。
- 清理早期误加文件:共享前移除初始提交里的临时文件。
- 规范作者信息:初始提交用错邮箱时在重写中修正。
- 模板仓库整理:发布模板前把历史磨平。
- 协作前预检:仓库即将对外开放前,最后过一遍历史质量。
- 教学仓库:为示例准备线性、可读的历史。
常用示例
常用示例
git log --oneline --max-parents=0 # 先确认根提交是哪一个
git rebase -i --root # 交互式重放全部历史(含根提交)
# 编辑器中用 pick/reword/squash 选择要做的操作
git rebase --abort # 中途想放弃时回到操作前
git log --oneline | head # 完成后核对新历史适用性判断
| 场景 | 是否可用 | 原因 |
|---|---|---|
| 个人未共享仓库 | 可以 | 无下游克隆受影响 |
| 早期项目 | 可以 | 历史短、协调成本低 |
| 多人共享主线 | 不建议 | 所有克隆历史失配 |
| 含子模块的仓库 | 谨慎 | 指针与历史需同步核对 |
整仓历史改写影响面大:所有分支、标签与下游克隆都需要协调处理,仅适合个人或早期仓库;已发布仓库按历史改写流程走,并让所有人重新克隆。