跳到主要内容

git rebase 命令

git rebase 命令用于变基操作,即将当前分支的起点“移动”到指定分支的最新提交之上,重新应用提交。它的目的是让提交历史更加线性、整洁,常用于整理 feature 分支或同步主干更新。

git merge 不同,rebase 不会创建新的合并提交,而是通过“复制提交”的方式,重写提交历史。

命令语法

git rebase [选项] <目标分支>

也可以变基到指定提交:

git rebase [选项] <提交ID>

常用选项参数

  • -i, --interactive:交互式变基,可修改、压缩、重排提交。
  • --onto <新基底>:将提交移动到指定的基底上,适合复杂操作。
  • --continue:解决冲突后继续 rebase。
  • --skip:跳过当前冲突的提交。
  • --abort:放弃 rebase,回到开始前的状态。
  • --autostash:自动 stash 工作区修改并在 rebase 后恢复。

使用示例

将当前分支变基到 main 分支的最新提交上:

git rebase main

交互式变基最近 3 次提交,可修改提交信息、合并提交等:

git rebase -i HEAD~3

feature 分支基于 develop 分支重新应用(用于手动 rebase 到特定提交):

git checkout feature
git rebase develop

将某个提交范围移动到另一个基底:

git rebase --onto new-base old-base my-branch

rebase 过程中遇到冲突,解决后继续:

git rebase --continue

跳过当前有问题的提交,继续 rebase:

git rebase --skip

中止 rebase 操作,恢复到操作前状态:

git rebase --abort

小贴士

  • 在变基之前,建议先运行 git fetch 获取远程最新变更,确保目标分支是最新的。

  • git rebase 会重写提交历史,不建议在已共享的公共分支(如 main)上执行。

  • 使用 git rebase -i 可以更优雅地整理提交记录,比如合并(squash)多次提交、修改提交说明。

  • 若当前工作目录有未提交的更改,可以加上 --autostash 参数自动临时保存:

    git rebase main --autostash