欢迎关注方志朋的博客,回复”666“获面试宝典

git merge 和 git rebase的区别

目的都是将一个分支的 commit 合并到到另外一个分支中去。

git merge

在gitlab上新建一个项目,push一个test文件上去

在本地修改test文件做两次commit,每次commit都在文件中加一句修改

在远程仓库中直接修改文件并 commit,模拟其他开发者的 commit。

如果此时我push本地的提交到远程,就会被拒绝,因为远程和本地已经各自有commit了,我们常规的做法是git pull一下,在本地解决冲突,然后继续push,本质上git pull = git fetch + git merge

产生冲突:

处理冲突:

重新走add commit 然后push,可以看到必须将合并当作一个新的commit:

git rebase

如果我们此时采用git pull --rebase,也就是=git fetch + git rebase

一样本地commit2次,远程commit2次

使用可以看到git pull --rebase,还是会提示我们去处理冲突,但是从git log 上可以看出明显已经发生了rebase,也就是变基,本地分支基于了远程的最新commit,而不是上次的本地commit。

git rebase

处理冲突,每处理完一次本地commit冲突,用git add标记冲突已处理完,用git rebase --continue继续处理下一个本地commit,也可以先用git rebase -i将本地的commit合并为一个commit,这样git pull --rebase就能一次处理所有的冲突。

push到远程之后,在分支图可以明显看到,跟merge的区别在于,rebase不会产生分支,并且也不会产生新的提交。

总结

  • merge 是一个合并操作,会将两个分支的修改合并在一起,默认操作的情况下会提交合并中修改的内容。

  • merge 的提交历史记录了实际发生过什么,关注点在真实的提交历史上面。

  • rebase 并没有进行合并操作,只是提取了当前分支的修改,将其复制在了目标分支的最新提交后面。

  • rebase 操作会丢弃当前分支已提交的 commit,故不要在已经 push 到远程,和其他人正在协作开发的分支上执行 rebase 操作。

  • merge 与 rebase 都是很好的分支合并命令,没有好坏之分,使用哪一个应由团队的实际开发需求及场景决定。

  • 如果比较关注commit时间的话,还是用git merge,rebase会打乱时间线是不可避免的。

来源 | https://juejin.cn/post/7001409038307033119

热门内容:
  • 干掉visio,这个画图神器真的绝了!!!

  • 面试官问:生成订单30分钟未支付,则自动取消,该怎么实现?

  • 不是我吹,这个idea插件你真没用过!

  • 比 Xshell 还好用的 SSH 客户端神器,MobaXterm 太爱了!

  • RedisJson 横空出世,性能碾压ES和Mongo!

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡

合并代码还在用git merge吗?我们都用git rebase!相关推荐

  1. git rebase VS git merge? 更优雅的 git 合并方式值得拥有

    写在前面 如果你不能很好的应用 Git,那么这里为你提供一个非常棒的 Git 在线练习工具 Git Online ,你可以更直观的看到你所使用的命令会产生什么效果 另外,你在使用 Git 合并分支时只 ...

  2. git merge命令 使用 合并分支

    git merge 概念介绍 git merge命令用于将两个或两个以上的开发历史加入(合并)一起. 使用语法 git merge [-n] [--stat] [--no-commit] [--squ ...

  3. 你什么时候使用git rebase而不是git merge?

    什么时候建议使用git rebase与git merge ? 成功改造后我还需要合并吗? #1楼 在合并/ rebase之前: A <- B <- C [master] ^\D <- ...

  4. 你在开发过程中使用Git Rebase还是Git Merge?

    1. 痛苦吗?代码历史中的迷失羔羊 我们先来看一个真实的代码提交历史图形化截图: 图片源自 https://storage.kraken.io/kk8yWPxzXVfBD3654oMN/c8b97f4 ...

  5. git merge 与 git rebase的区别

    转自:https://blog.csdn.net/liuxiaoheng1992/article/details/79108233 其实这个问题困扰我有一段时间,相信也有人和我一样有这个困扰,网上已有 ...

  6. 是否有“他们的”版本的“git merge -s ours”?

    当使用git merge将主题分支"B"合并到"A"时,我会遇到一些冲突. 我知道使用"B"中的版本可以解决所有冲突. 我知道git mer ...

  7. 【创作赢红包】Git Merge 深入解析

    目录 前言 一.Git Merge 基本概念 1.1 Git 分支 1.2 Git Merge 简介 1.3 合并冲突 二.Git Merge 实践操作 2.1 创建和切换分支 2.2 合并分支 2. ...

  8. 4. git merge简介,以及git merge的参数–ff、–no-ff和–squash的区别?

    1.git merge原理 A---B---C topic/ \D---E-----F------H master 在master分支中使用git merge topic,只会将C和H中的文件进行比较 ...

  9. Git之 手把手教你使用Git

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...

最新文章

  1. tomcat7修改内存 win_详解Windows下调整Tomcat启动参数的实现方法
  2. 1.2 检测和测量图像中的圆形目标
  3. 自已写的几个分页的存储过程
  4. java 数据结构 快速入门_Java 数据结构快速入门
  5. 三十、Java 多线程编程(上篇)
  6. 九度OJ 1051:数字阶梯求和
  7. python二维列表的展开_python将三维数组展开成二维数组的实现
  8. 邮箱与手机做账号的验证实例
  9. 与网络计算机相比,和通信网络相比,计算机网络最本质的功能是什么
  10. Linux音频驱动-PCM设备
  11. 使用SoapUI测试webservice接口详细步骤
  12. c语言 函数-斐波那契数列,c语言斐波那契数列递归法(示例代码)
  13. Python入门教程三:显示'Welcome to Python'五次
  14. cad 打开硬件加速卡_CAD2020 使用图块插入命令特别卡怎么办?
  15. ajax将监听器值赋值servlet,Java面试问题
  16. HTML5面试题总结
  17. 微信小程序云函数请求接口
  18. 区县公安合成作战中心调研:(一)引言
  19. 第9个HttpClient 例子,HttpClient+jsoup 扩展获取网站信息
  20. ArcGis Engine二次开发入门(1)

热门文章

  1. 手把手教你 MongoDB 的安装与详细使用(二)
  2. Hadoop-2.7.4 集群快速搭建
  3. win10用什么软件测试硬件,Win10系统下硬件设备检测工具的使用方法
  4. 最长递增子序列的两种解法
  5. main方法为什么是静态的
  6. Java与UML交互图
  7. 电子学会青少年编程等级考试四级题目解析07
  8. 【组队学习】【30期】6. 树模型与集成学习
  9. 第02期 基础算法(Leetcode)刻意练习开营计划
  10. 数据结构与算法--线性表(顺序表)