news 2026/5/31 1:50:22

蓝易云 - git rebase和merge区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
蓝易云 - git rebase和merge区别

蓝易云|Gitrebasemerge的区别:选型原则 + 典型场景(工程化讲清楚)🧭

mergerebase都是在“合并两条开发线”,最终代码快照可以一样,但差别在于:你选择保留怎样的历史结构与审计线索。Git 官方书籍明确指出:差异主要体现在历史而非结果。(Git)


1)一句话结论(别绕弯)✅

  • merge:保留真实分叉历史,把两条分支“汇合”,必要时生成合并提交(merge commit)。(Git)

  • rebase:重写历史,把你的提交“按顺序重放”到新的基底上,形成更线性的提交链;代价是提交 ID 会变化(本质是新提交)。(Git)


2)直观图:历史长什么样(看完就懂)🙂

gitGraph commit id:"A" commit id:"B" branch feature checkout feature commit id:"C" commit id:"D" checkout main commit id:"E" merge feature id:"M (merge)"

**解释:**这是merge的典型形态:保留分叉与汇合点M,审计很清晰。

gitGraph commit id:"A" commit id:"B" branch feature checkout feature commit id:"C" commit id:"D" checkout main commit id:"E" checkout feature commit id:"C'" commit id:"D'"

**解释:**这是rebase的典型形态:C/D被“重放”为C'/D',历史更直,但属于改写。(Git)


3)对比表:工程决策看这张就够了 📌

维度mergerebase
历史策略保留分支真实轨迹重写为线性历史
是否改提交 ID通常不改会改(重放生成新提交)(Git)
典型产物merge commit / 或 fast-forward一条直线提交链
风险点历史更“树状”,有时看着乱共享分支上 rebase 容易“撞车”(GitLab 文档)
适用场景上游集成、公共分支合并个人分支整理提交、PR 前清理

4)命令怎么用:给你“可复制”的标准动作 🛠️

4.1 用merge把功能分支合入主分支

git checkout main git pull git merge feature/login --no-ff

解释:

  • git checkout main:切到主分支,明确“合入目标”。

  • git pull:先把本地 main 同步到最新,减少不必要冲突。

  • git merge feature/login --no-ff:即使可以快进也强制生成merge commit,利于留痕与回溯;--ff/--no-ff行为在官方文档里有明确说明。(Git)

4.2 用rebase把功能分支“挪到”最新主分支之上

git checkout feature/login git fetch origin git rebase origin/main

解释:

  • git fetch origin:只拉取远端引用,不改你当前分支,更安全可控。

  • git rebase origin/main:把 feature 上的提交按顺序重放到origin/main之上,官方对“replay commits”的描述非常明确。(Git)

4.3 冲突处理(rebase 场景)

# 解决冲突后 git add -A git rebase --continue

解释:

  • git add -A:把已解决的文件加入暂存区,告诉 Git “这部分我确认好了”。

  • git rebase --continue:继续重放下一笔提交,直到完成。

git rebase --abort

**解释:**中止 rebase,回到开始前的状态,属于“止损按钮”。


5)怎么选:我给你一条不绕弯的团队规则 😄

  • 公共主干(main/master/release)优先用 merge:历史真实、协作成本低。(atlassian.com)

  • 个人功能分支在提 PR 前,用 rebase 把提交整理成“能审、能回滚”的形态(必要时交互式 rebase 合并碎提交)。(Git)

  • 重点红线:不要对已推送、多人共享的分支随意 rebase,因为它会重写历史,容易引发他人分支对不齐与二次冲突。(GitLab 文档)

如果你告诉我你们团队是“强制线性历史”还是“保留 merge commit”,以及是否使用 PR 的 Squash 策略,我可以给你一套更贴合你们交付节奏的分支规范(包含git pull --rebase的使用边界与回滚策略)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 22:09:37

轻量级单目深度估计方案|基于MiDaS_small模型的CPU优化实践

轻量级单目深度估计方案|基于MiDaS_small模型的CPU优化实践 在计算机视觉领域,3D空间感知能力正成为越来越多智能应用的核心需求。从AR/VR、机器人导航到图像生成控制,理解二维图像背后的三维结构至关重要。而单目深度估计(Monoc…

作者头像 李华
网站建设 2026/5/28 21:58:19

Rembg抠图边缘处理:羽化与锐化的平衡

Rembg抠图边缘处理:羽化与锐化的平衡 1. 智能万能抠图 - Rembg 在图像处理领域,精准、高效、自动化地去除背景一直是设计师、电商运营和AI开发者的核心需求。传统手动抠图耗时费力,而早期基于颜色阈值或边缘检测的自动方法又难以应对复杂边…

作者头像 李华
网站建设 2026/5/28 17:33:23

Rembg抠图优化:提升处理速度的5个关键参数

Rembg抠图优化:提升处理速度的5个关键参数 1. 智能万能抠图 - Rembg 在图像处理与内容创作领域,自动去背景已成为一项高频刚需。无论是电商商品图精修、社交媒体素材制作,还是AI生成内容(AIGC)中的元素复用&#xff…

作者头像 李华
网站建设 2026/5/30 22:52:22

Qwen2.5-7B-Instruct镜像部署与前端调用详解

Qwen2.5-7B-Instruct镜像部署与前端调用详解 一、前言 随着大语言模型(LLM)技术的快速发展,如何高效地将高性能模型部署到生产环境并提供友好的交互界面,已成为开发者关注的核心问题。本文聚焦于 Qwen2.5-7B-Instruct 模型的实际…

作者头像 李华
网站建设 2026/5/30 16:12:13

Rembg API调用教程:Python集成步骤详解

Rembg API调用教程:Python集成步骤详解 1. 智能万能抠图 - Rembg 在图像处理领域,自动去背景是一项高频且关键的需求。无论是电商商品图精修、社交媒体内容创作,还是AI生成图像的后处理,都需要一种高精度、自动化、无需人工标注…

作者头像 李华
网站建设 2026/5/30 16:09:30

Qwen2.5-7B-Instruct镜像优势解析|附长文本生成实践

Qwen2.5-7B-Instruct镜像优势解析|附长文本生成实践 一、技术背景与核心价值 随着大模型在自然语言处理领域的持续演进,长上下文理解能力和结构化输出生成能力已成为衡量现代语言模型实用性的关键指标。通义千问团队于2024年9月发布的Qwen2.5系列模型&…

作者头像 李华