不到断气不罢休 发表于 2025-4-5 07:17:19

一分钟教会你git的归并与变基(答应我不要再傻傻分不清了)

前言

有的小伙伴可能对git中的归并和变基傻傻分不清楚或者对他们的概念不是很明白,我发现很多文章先容的太抽象了,于是我希望通过具体的例子将抽象具象化,希望能帮助到你!!
1. 归并(Merge)——简单粗暴的“打包整理”

场景:
假设你和同事一起写文档,各安闲文档的不同部分修改(各自有一个分支)。
操纵:


[*]你把同事的修改(分支)直接“打包”归并到你的主版本里。
[*]归并后会新增一个“归并提交”,记录这次归并动作(类似贴个标签:“此处归并了同事的修改”)。
结果:


[*]汗青记录中能看到两个分支的完整轨迹,但可能会像这样:主分支:A → B → C → M(合并提交)
同事分支:      D → E

[*]优点:简单安全,保存完整汗青。
[*]缺点:如果分支多,汗青记录会像一团毛线,难以追踪。
2. 变基(Rebase)——强迫症的“重新整理”

场景:
照旧你和同事写文档,但你想让修改汗青看起来像一条直线,没有分叉。
操纵:


[*]你把同事的修改(分支)“剪切”下来,然后**“粘贴”到你的最新版本背面**。
[*]相当于假冒同事的修改是基于你最新代码写的(现实修改内容稳定,但汗青被重写)。
结果:


[*]汗青记录酿成一条直线:主分支:A → B → C → D' → E'
(D和E被“重放”到C背面,酿成D’和E’)
[*]优点:汗青干净,方便查看代码演进。
[*]缺点:重写汗青有风险(如果已推送远程分支,可能坑队友)。
直接对比

归并(Merge)变基(Rebase)汗青记录保存分叉,能看到归并点酿成直线,隐蔽分叉实用场景公共分支(如主分支)个人开辟分支(未共享的分支)风险安全,不修改汗青重写汗青,可能引发冲突或混乱操纵结果多一个归并提交(Merge Commit)无额外提交,直接拼接提交 生存类比



[*]归并:搬家时,直接把两个箱子堆在一起,贴个标签“归并箱子1和箱子2”。
[*]变基:搬家时,把两个箱子的东西重新整理成一个箱子,假冒一开始就只有一个箱子。
黄金原则



[*]归并:用于公共分支(比如团队协作的主分支),保证汗青完整。
[*]变基:用于自己的本地分支,整理干净后再归并到主分支。
[*]千万不要:对已推送到远程的分支做变基(除非你知道自己在做什么)!
明白了吗?简单说:归并是“保存现场”,变基是“修改汗青”
页: [1]
查看完整版本: 一分钟教会你git的归并与变基(答应我不要再傻傻分不清了)