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

打印 上一主题 下一主题

主题 1699|帖子 1699|积分 5097

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
前言

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

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


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


  • 汗青记录中能看到两个分支的完整轨迹,但可能会像这样:
    1. 主分支:A → B → C → M(合并提交)  
    2. 同事分支:      D → E  
    复制代码
  • 优点:简单安全,保存完整汗青。
  • 缺点:如果分支多,汗青记录会像一团毛线,难以追踪。

2. 变基(Rebase)——强迫症的“重新整理”

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


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


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

直接对比

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



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

黄金原则



  • 归并:用于公共分支(比如团队协作的主分支),保证汗青完整。
  • 变基:用于自己的本地分支,整理干净后再归并到主分支。
  • 千万不要:对已推送到远程的分支做变基(除非你知道自己在做什么)!
明白了吗?简单说:归并是“保存现场”,变基是“修改汗青”
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表