当前位置: 首页 > news >正文

git merge和git rebase的区别

拿 feat 和 develop 分支举例

merge

将feat分支的更改合并到develop分支中,然后创建一个新的“合并提交”,所以会保留这种分叉结构,也就是保留历史(时间顺序

rebase

变基合并,会先去找这两个分支的公共节点base,然后把当前分支base之后的所有节点提交记录截取下来,嫁接到develop分支最新提交的后面,嫁接的这部分分支会成为最新的提交(跟原来的commit号不一样),打乱了原来的提交结构和时间顺序,成为线性结构

不会产生新的节点

 

在产生冲突时

merge 需要解决冲突之后提交一个合并提交;并且解决冲突之后保留记录

rebase 需要逐个解决冲突并且继续变基;不会保留记录

优缺点

综合下来

Merge具有更高的可追溯性,能够找到整个提交历史,而Rebase则让pr更整洁且易于审核

rebase 的风险及规避方法

  1. 简述:a和b都用一个分支开发,此时a修改本地代码并用rebase强制推送,若b没有同步远程代码,直接推送代码就会因为远程被修改而报错,如果再想拉取远程代码也会报错显示重复提交
  2. 本质:使用rebase必须用git push --force强推
  3. 方法:
  • 避免强制推送共享分支:git push --force-with-lease
  • 在推代码之前先拉一下远程分支

以下是参考文章及视频:

【GIT】什么?你还不知道Merge和Rebase的区别吗?_哔哩哔哩_bilibili

Git:Rebase和Merge之间的区别,看完这篇文章你就懂了!-CSDN博客

30分钟弄懂所有工作Git必备操作 / Git 入门教程_哔哩哔哩_bilibili

http://www.xdnf.cn/news/532171.html

相关文章:

  • GPT-4.1特点?如何使用GPT-4.1模型,GPT-4.1编码和图像理解能力实例展示
  • 宏汇编以及浮点程序设计实验
  • 解决leetcode第3539题.魔法序列的数组乘积之和
  • NW860NW894美光闪存颗粒NX770NX789
  • 学习黑客PowerShell的历史、架构与工作原理深度解析
  • 什么是RDMA?
  • 苍穹外卖 - Day03
  • Solana 一键发币 + 自动建池:技术逻辑与挑战解析
  • 《Head First 设计模式》第二章 - 笔记
  • 手动制做一个Transformer
  • C++初阶-vector的使用
  • python-leetcode 67.寻找两个正序数组中的中位数
  • 如何在 Windows 11 或 10 上安装 Fliqlo 时钟屏保
  • CSS attr() 函数详解
  • HJ3 明明的随机数【牛客网】
  • 11.4/Q1,GBD数据库最新文章解读
  • threejs制作上升的小球
  • Kruise Rollout多批次发布
  • 3D 数据交换格式(.3DXML)简介
  • PyTorch Geometric(PyG):基于PyTorch的图神经网络(GNN)开发框架
  • 如何评估开源商城小程序源码的基础防护能力?
  • SCAU18924--二叉树的宽度多解
  • uniapp打包H5,输入网址空白情况
  • 样本复杂性:机器学习的数据效率密码
  • 【Vite】静态资源的动态访问
  • Libero离线IP安装
  • JWT : JSON Web Token
  • Linux 常用命令
  • 华为云Flexus+DeepSeek征文|基于华为云Flexus云服务的云服务器单机部署Dify-LLM应用开发平台
  • 力扣HOT100之二叉树:230. 二叉搜索树中第 K 小的元素