一张图看懂「Git 分支」:在地图上做标记
新手怕 Git,其实把“分支”想成在地图上做的标记就通了。
一、分支 = 一条带记号的路
你写代码的历史,是一条不断往前延伸的路(提交链)。分支就是在这条路上插的一面旗,指向“当前走到哪”。
默认你在一面叫 main 的旗下走。想试试新功能又怕弄乱主线?新插一面旗 feature,到那面旗下随便改,主线 main 毫发无损。
二、合并(merge):把两条路接起来
feature 做完了,想并入主线:回到 main 旗下,说“把 feature 的路接进来”。Git 会造一个合并提交,把两边的改动合到一起。
缺点:历史里多出一条“合并线”,人多时看着像蜘蛛网。
三、变基(rebase):把补丁挪到最新起点
另一种做法:把你在 feature 上走的几步,“搬到” main 的最新终点后面重新走一遍。结果是一条干净的直线,没有多余的合并线。
代价:它改写了历史(原来的提交被复制成新的),所以已推送到公共仓库的分支,别 rebase,否则别人基于旧历史会冲突。
四、一句话口诀
- 自己未公开的试验,想整洁就用 rebase。
- 已经和大家共享的分支,用 merge,别改公共历史。
- 分支用完就删,地图才不乱。
一句话:Git 分支就是“先插旗分头走,做完再把路接回主线”;merge 留痕、rebase 整洁,但 rebase 别动公共历史。