Skip to content

git变基

“Git 变基(rebase)”是 Git 中一个非常强大但又容易搞混的功能。它的作用是:把一个分支的更改“迁移”到另一个分支上,相当于重新整理提交历史。它常用于保持 Git 提交历史清晰、线性。


一句话理解:

变基(rebase)是“把你的提交移到别人的提交后面”。


一些常见场景

场景 1:本地分支落后于主分支

比如你在 feature 分支上开发功能,远程的 main 分支已经有新提交了:

A---B---C main (远程)
     \
      D---E feature (本地)

你想把 feature 分支的提交整理到最新的 main 分支之后。

使用 rebase:

bash
# 切换到 feature 分支
git checkout feature

# 把 feature 分支基于 main 最新提交
git rebase main

变基之后的结构:

A---B---C main
             \
              D'---E' feature

注意:DE 变成了新的提交 D'E'(即 提交被重写了)。


和 merge 的区别

假设你用 git merge main,结构会变成这样:

A---B---C main
     \     \
      D---E---M feature
  • merge 会产生一个 额外的合并提交 M
  • rebase 会让提交历史更“线性”,更像是你直接从最新 main 开始开发一样。

场景 2:多个开发者合作时使用 rebase

假设你在本地提交了一些东西,准备推送,但远程已经有新的提交了。你可以先拉取并变基:

bash
git pull --rebase

这会把远程的新提交放在你前面,保持提交历史整洁。


常用 rebase 命令总结

命令作用
git rebase main把当前分支的提交变基到 main
git pull --rebase拉取远程提交并变基
git rebase -i HEAD~3交互式变基,整理最近 3 次提交(如 squash、reword)
git rebase --abort放弃变基过程
git rebase --continue解决冲突后继续变基

⚠️ 注意事项

  • 变基会“改写历史”,不要对已推送的共享分支使用 rebase,否则其他人会出现冲突。
  • 适合用于 本地开发分支整理提交记录在推送之前使用