git merge和git rebase区别

发布于:2025-09-14 ⋅ 阅读:(15) ⋅ 点赞:(0)

Git Merge(合并)

Git Merge 是git中的一种合并技术,其中分支上commit的日志是完整的。

举一个例子,如果我们有一个项目:

  1. 在master分支上有3个commit,分别为commit1、2、3
  2. feature分支commit作为commit A和B
  3. 如果我们执行git merge操作,则commit A和B 将作为commit 4合并到master分支中
    git merge分支

优势:

  • 日志非常详尽,可以帮助理解每次merge发生的方式和时间的完整历史。
  • 发现错误并解决它们很容易。

缺点:

  • 导致笨拙的日志/历史记录
  • 不是很人性化
    git Merge缺点

Git-Rebase(变基)

Git Rebase类似于git merge,但是在这种技术中,日志在merge之后被修改。引入Git rebase是为了克服合并的限制,即 使历史记录看起来是线性的
让我们举一个例子,如果我们有一个项目:

  1. 在master分支上有3个commit作为commit1、2、3
  2. feature分支commit作为commite A和B
  3. 如果我们执行git rebase操作,则 commit A和B将作为commit 4和5重新基于master分支,并且将没有feature分支的日志
    git rebase

优势:

  • 日志是线性的

缺点:

  • 我们无法跟踪在目标分支上合并commit的时间和方式

Git Merge VS Git Rebase

Git Merge Git Rebase
Git merge是一个允许您从Git合并分支的命令 Git rebase允许开发人员将更改从一个分支集成到另一个分支
在Git中,合并日志将显示commit合并的完整历史记录 在Git rebase中,日志是线性的
feature分支上的所有commit将合并为master分支中的单个commit 将重新设置所有commit,并将相同数量的commit添加到master分支
当目标分支是共享分支时使用Git Merge 当目标分支是私有分支时,应使用GitRebase

实际演示

使用Git rebase实现提交压缩

演示分支:master

  1. 新建 git_test.txt 文件,a b c 分别提交,生成三个提交请求
    git rebase

  2. 选择要压缩的提交(这里选择 提交a 请求,然后右键)
    交互式变基

  3. a、b请求 压缩提交:
    在这里插入图片描述
    修改完提交描述,按下 Ctrl+Enter
    修改提交描述

  4. 按照同样的方式将 c请求 也压缩进来
    在这里插入图片描述

  5. 启动变基
    启动变基

  6. 最终效果:三个合并请求变为一个
    最终展示效果

Git Merge和Git Rebase合并请求区别

需求:

  1. feature 开发新特性
  2. 中间需要在 master 分支穿插新功能
  3. 切换回 feature 分支完成新特性开发

使用Git merge 合并请求

演示分支:
共享分支:master
特性分支:feature1

  1. 新建特性分支 feature1,然后新建 提交1a
    在这里插入图片描述

  2. 切换到master分支,新建提交d
    在这里插入图片描述

  3. 切换回feature1分支,完成特性功能开发
    在这里插入图片描述

  4. master合并feature1,并解决冲突
    在这里插入图片描述

  5. 最终效果:合并完成后会多一个merge出来
    在这里插入图片描述

使用Git rebase 合并请求

步骤 1 2 3 同上
在这里插入图片描述

  1. 将feature2变基到 master分支,如下图所示:
    在这里插入图片描述在这里插入图片描述

  2. 切换到master分支,将feature2分支合并到master分支,并将合并提交到远程
    在这里插入图片描述
    在这里插入图片描述

  3. 当特性功能开发完成,删掉feature2分支,此时 feature2的提交记录也会跟着清除
    在这里插入图片描述
    在这里插入图片描述