跳到正文

变基

Rebase

高级通用

变基(Rebase)是把一个分支上的提交,重新应用到另一个提交之后的 Git 操作。它能让你的功能分支接上较新的主分支,整理出更容易阅读的提交历史;例如在提交合并请求前更新自己的分支。

你可能会说:「我的功能分支落后主分支了,想接上最新代码,又想让提交记录保持连贯。」

读之前建议先了解(这是一个高级概念)

动手看看

main当前所在 HEADfeature/coupon商城骨架商品详情main · HEAD
1

商品页已经做好。你准备在这个基础上开发优惠券功能,目前 main 指向“商品详情”。

要点

  1. 1

    把自己的提交接到新起点

    你在功能分支做了几个提交,同时主分支也有了新提交。变基会找出功能分支独有的提交,把它们依次重新应用到较新的主分支之后,所以分支看起来像是从新位置开始开发的。

  2. 2

    内容可相同但提交会变

    重新应用会生成新的提交,即使最终文件内容没变,提交的哈希通常也会改变。因为历史被改写了,所以你可以用它整理自己尚未与别人共用的分支;对大家已经依赖的分支,就得先考虑协作影响。

  3. 3

    遇到冲突需要逐步处理

    如果你和主分支都改了网站的同一段导航代码,变基可能会在应用某个提交时暂停。你需要检查冲突、确定最终代码,暂存后继续变基;如果发现方向不对,也可以中止,回到变基前的状态。

容易混淆的地方

变基和合并都能把主分支的新改动带进功能分支。合并通常保留两条分支原有的提交,并可能增加一个合并提交;变基则重新生成你这边的提交,让历史沿着新起点展开。它也不同于拣选提交:拣选是挑指定提交应用过来,变基通常是移动一段分支历史。

什么时候用

适合用

  • 你独自开发后台筛选功能,主分支已更新;提交合并请求前,用变基让功能分支接上最新代码。
  • AI Agent 在你的本地功能分支做了多次提交,你想先接上主分支的新改动,再检查完整的差异。

不适合用

  • 团队正在共同使用同一条功能分支,其他人已基于它继续开发;此时更新主分支改动,更适合用合并。
  • 你只想撤销已经上线的一次错误修改,而不是移动分支的起点;用回退提交保留修复记录。
  • 你只想把另一个分支的一项独立修复带过来,不需要搬动整段提交历史;用拣选提交。

练一练

你独自维护一个尚未共享的报表功能分支。主分支新增了权限检查,你想在提交合并请求前接入这项改动,并让自己的提交排在最新主分支之后。选哪种做法?

让 AI 帮你做

请先检查当前分支和工作区状态。若工作区有未提交修改,先停下来告诉我;否则把我的报表功能分支变基到最新主分支。遇到冲突时说明涉及的文件和两边意图,等我确认后再继续。完成后运行相关测试,列出提交变化,不要擅自强制推送。

接下来学什么