变基
Rebase
高级通用变基(Rebase)是把一个分支上的提交,重新应用到另一个提交之后的 Git 操作。它能让你的功能分支接上较新的主分支,整理出更容易阅读的提交历史;例如在提交合并请求前更新自己的分支。
你可能会说:「我的功能分支落后主分支了,想接上最新代码,又想让提交记录保持连贯。」
动手看看更新优惠券页分支
1
商品页已经做好。你准备在这个基础上开发优惠券功能,目前 main 指向“商品详情”。
要点变基会怎样改变你的分支?
- 1
把自己的提交接到新起点
你在功能分支做了几个提交,同时主分支也有了新提交。变基会找出功能分支独有的提交,把它们依次重新应用到较新的主分支之后,所以分支看起来像是从新位置开始开发的。
- 2
内容可相同但提交会变
重新应用会生成新的提交,即使最终文件内容没变,提交的哈希通常也会改变。因为历史被改写了,所以你可以用它整理自己尚未与别人共用的分支;对大家已经依赖的分支,就得先考虑协作影响。
- 3
遇到冲突需要逐步处理
如果你和主分支都改了网站的同一段导航代码,变基可能会在应用某个提交时暂停。你需要检查冲突、确定最终代码,暂存后继续变基;如果发现方向不对,也可以中止,回到变基前的状态。
容易混淆的地方
变基和合并都能把主分支的新改动带进功能分支。合并通常保留两条分支原有的提交,并可能增加一个合并提交;变基则重新生成你这边的提交,让历史沿着新起点展开。它也不同于拣选提交:拣选是挑指定提交应用过来,变基通常是移动一段分支历史。
什么时候用
适合用
- 你独自开发后台筛选功能,主分支已更新;提交合并请求前,用变基让功能分支接上最新代码。
- AI Agent 在你的本地功能分支做了多次提交,你想先接上主分支的新改动,再检查完整的差异。
不适合用
- 团队正在共同使用同一条功能分支,其他人已基于它继续开发;此时更新主分支改动,更适合用合并。
- 你只想撤销已经上线的一次错误修改,而不是移动分支的起点;用回退提交保留修复记录。
- 你只想把另一个分支的一项独立修复带过来,不需要搬动整段提交历史;用拣选提交。
练一练选一个答案,看看解释
你独自维护一个尚未共享的报表功能分支。主分支新增了权限检查,你想在提交合并请求前接入这项改动,并让自己的提交排在最新主分支之后。选哪种做法?
让 AI 帮你做复制给 AI Agent 直接用
请先检查当前分支和工作区状态。若工作区有未提交修改,先停下来告诉我;否则把我的报表功能分支变基到最新主分支。遇到冲突时说明涉及的文件和两边意图,等我确认后再继续。完成后运行相关测试,列出提交变化,不要擅自强制推送。