news 2026/4/15 10:30:59

git rebase和merge区别

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
git rebase和merge区别

1. 基本概念

git merge

  • 作用:将两个分支的内容合并到一起,通常是把某个分支(如 feature 分支)合并到主分支(如 master)。
  • 历史记录:保留所有分支的提交历史,并生成一个新的合并提交(merge commit)。
  • 命令示例
    git checkout master git merge feature

git rebase

  • 作用:将一个分支的所有提交“移动”到另一个分支的最新提交之后。
  • 历史记录:会重写提交历史,使分支看起来像是从目标分支直接分叉出来的,没有合并提交。
  • 命令示例
    git checkout feature git rebase master

2. 工作原理

Merge 原理

  • 会产生一个新的合并节点(commit),把两个分支的变化都包含进去。
  • 分支历史是分叉的,合并后会有一个“汇合点”。

示意图:

A---B---C (master) \ D---E (feature)

合并后:

A---B---C---F (master) \ / D---E (feature)

F 是 merge commit。


Rebase 原理

  • 会将 feature 分支上的提交(D、E)“摘下来”,然后放到 master 的最新提交(C)之后,提交哈希会变化。
  • 历史变得线性,没有合并节点。

示意图:

A---B---C (master) \ D---E (feature)

rebase 后:

A---B---C---D'---E' (feature)

D’、E’ 是新的提交(哈希变化)。


3. 优缺点对比

mergerebase
历史保留分支历史,产生合并节点线性历史,无合并节点
冲突处理一次性解决所有冲突每个 commit 逐一解决冲突
协作更安全,适合多人协作适合个人开发,慎对公共分支使用
可读性复杂,分叉明显清晰,线性
提交哈希不变变更(新哈希)

4. 使用场景建议

  • merge:适合多人协作,不会重写历史,安全可靠,适合合并公共分支(如 master)。
  • rebase:适合个人开发或整理提交历史,让提交更清晰。不要在公共分支上 rebase(可能导致他人提交丢失)。

5. 总结

  • merge:保留分支历史,产生合并提交,分叉明显。
  • rebase:重写历史,线性提交,无合并节点。
  • 选择建议:本地开发可以用 rebase 整理历史,最终合并到主分支建议用 merge。

6. 实际开发场景举例

场景一:多人协作开发(推荐 merge)

假设你和同事都在feature分支上开发,期间主分支(master)有新的提交。如果你用rebase,会改变feature分支的提交哈希,导致同事的本地分支和你的分支产生冲突,后续推送/拉取会很麻烦。所以多人协作时,推荐用merge

场景二:个人开发整理提交(推荐 rebase)

如果你在feature分支上开发,期间master有更新,你想让自己的提交历史更清晰,可以用rebase。这样你的提交在master最新提交之后,看起来像是“直接”基于最新代码开发的。


7. 命令演示和常见问题

合并分支(merge)

# 切到主分支 git checkout master # 合并 feature 分支 git merge feature
  • 若有冲突,Git 会提示你解决冲突,解决后继续:
    git add . git commit

变基分支(rebase)

# 切到 feature 分支 git checkout feature # 变基到 master git rebase master
  • 若有冲突,Git 会暂停 rebase,提示你解决冲突。解决后继续:
    git add . git rebase --continue
  • 如果想放弃 rebase:
    git rebase --abort

rebase 后推送注意事项

如果你已经把feature分支推送到远程,且 rebase 后哈希变了,推送时要用--force--force-with-lease,否则会被拒绝:

git push origin feature --force

注意:强推会覆盖远程分支,慎用!


8. 交互式 rebase(整理提交历史)

git rebase -i可以在本地整理自己的提交历史,比如合并、修改、删除提交:

git checkout feature git rebase -i master

会弹出编辑界面,可以对提交做各种操作。


9. 什么时候不能用 rebase?

  • 公共分支禁止 rebase:如果分支已经推送到远程,且多人在用,rebase 会导致别人本地分支和远程分支不一致,容易引发混乱。
  • 已合并到主分支的分支不建议再 rebase

10. 总结口诀

  • 多人协作用 merge,个人整理用 rebase。
  • 公共分支慎用 rebase,本地分支大胆用。
  • rebase 会改变历史,merge 保留历史。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 2:13:34

Open-AutoGLM安装不完全手册,资深架构师不愿透露的4大秘诀

第一章:Open-AutoGLM推理引擎框架概述Open-AutoGLM 是一个面向通用语言模型自动推理的高性能引擎框架,专为支持复杂逻辑推导、多跳问答与自主任务分解而设计。其核心目标是通过模块化架构提升大语言模型在实际应用场景中的推理可控性与执行效率。架构设计…

作者头像 李华
网站建设 2026/4/15 8:26:13

Open-AutoGLM点咖啡实战指南(从零搭建AI点单系统)

第一章:Open-AutoGLM点咖啡实战指南概述在人工智能与物联网融合发展的当下,Open-AutoGLM 作为一款开源的自动语言生成模型框架,正逐步应用于生活服务自动化场景。本章聚焦于其在“点咖啡”这一典型高频需求中的实际落地应用,展示如…

作者头像 李华
网站建设 2026/4/14 18:55:46

Agentic AI可靠性工程实践,确定性工具与探索性Agent的平衡

Erickson认为,当我们将代理式AI视为真实运营系统之上的一个抽象层,而不是完全替代这些系统时,它才会变得真正有价值。模型可以理解问题、检索证据、分类情况并提出行动建议,而确定性系统则负责执行操作、强制执行约束,…

作者头像 李华
网站建设 2026/4/15 4:49:04

2025年吉林大学计算机考研复试机试真题(附 AC 代码 + 解题思路)

2025年吉林大学计算机考研复试机试真题 2025年吉林大学计算机考研复试上机真题 历年吉林大学计算机考研复试上机真题 历年吉林大学计算机考研复试机试真题 更多学校题目开源地址:https://gitcode.com/verticallimit1/noobdream N 诺 DreamJudge 题库&#xff1…

作者头像 李华
网站建设 2026/4/14 9:09:22

视频融合平台EasyCVR赋能旅游景区构建全场景可视化监控新体系

EasyCVR视频融合平台凭借其多协议兼容、全终端适配、智能化分析等核心优势,为旅游景区打造了一套全场景、一体化的视频监控解决方案,助力景区实现“安全可控、服务提质、运营高效”的数字化目标。一、 旅游景区管理面临的核心痛点设备与协议碎片化&#…

作者头像 李华
网站建设 2026/4/10 8:31:26

从源码编译到推理验证:Open-AutoGLM安装全过程详解

第一章:Open-AutoGLM推理引擎框架概述Open-AutoGLM 是一个面向通用语言模型自动推理任务的高性能开源引擎框架,专为支持复杂逻辑推理、多跳问答与程序生成等高级自然语言处理场景而设计。该框架融合了符号推理与神经网络推断的优势,通过模块化…

作者头像 李华