版本控制
变基(rebase)
变基(rebase)就是把你分支上的提交一个个拎起来,重新「放映」到另一个分支的最新版本之上——仿佛你的工作是此刻才开始的,而不是上周。结果是一条干净、笔直的历史线,中间没有任何「合并」的拐弯。
它解决的是一个实实在在的烦恼。在你开发功能的这段时间里,main 已经往前走了。用合并(merge),会把两条线接起来,在历史里留下一个看得见的「分叉又汇合」;而变基则改写你的提交,让它们整整齐齐地坐在 main 的新顶端上,就好像那次分岔从未发生过。最终代码一样,故事却更利落。
有一条规则要刺在胳膊上:永远不要对已经分享出去的提交做变基。变基会改写历史——它给你的提交换上全新的编号(ID)——所以对别人已经拉取(pull)过的工作动手,会把大家的副本全搅乱。在分享之前,对你自己的私有分支变基;如果工作已经公开,那就老老实实用合并。
$ git switch fix-login $ git rebase main Successfully rebased and updated refs/heads/fix-login.
把你 fix-login 的提交重放到最新的 main 之上——历史笔直,没有合并气泡。
合并和变基不是对错之分——合并如实保留发生过的一切,变基则把它理成一条直线。看团队口味来选。
又称
另见