一分钟教会你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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值