合并代码还在用git merge吗?我们都用git rebase!
欢迎关注方志朋的博客,回复”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!相关推荐
- git rebase VS git merge? 更优雅的 git 合并方式值得拥有
写在前面 如果你不能很好的应用 Git,那么这里为你提供一个非常棒的 Git 在线练习工具 Git Online ,你可以更直观的看到你所使用的命令会产生什么效果 另外,你在使用 Git 合并分支时只 ...
- git merge命令 使用 合并分支
git merge 概念介绍 git merge命令用于将两个或两个以上的开发历史加入(合并)一起. 使用语法 git merge [-n] [--stat] [--no-commit] [--squ ...
- 你什么时候使用git rebase而不是git merge?
什么时候建议使用git rebase与git merge ? 成功改造后我还需要合并吗? #1楼 在合并/ rebase之前: A <- B <- C [master] ^\D <- ...
- 你在开发过程中使用Git Rebase还是Git Merge?
1. 痛苦吗?代码历史中的迷失羔羊 我们先来看一个真实的代码提交历史图形化截图: 图片源自 https://storage.kraken.io/kk8yWPxzXVfBD3654oMN/c8b97f4 ...
- git merge 与 git rebase的区别
转自:https://blog.csdn.net/liuxiaoheng1992/article/details/79108233 其实这个问题困扰我有一段时间,相信也有人和我一样有这个困扰,网上已有 ...
- 是否有“他们的”版本的“git merge -s ours”?
当使用git merge将主题分支"B"合并到"A"时,我会遇到一些冲突. 我知道使用"B"中的版本可以解决所有冲突. 我知道git mer ...
- 【创作赢红包】Git Merge 深入解析
目录 前言 一.Git Merge 基本概念 1.1 Git 分支 1.2 Git Merge 简介 1.3 合并冲突 二.Git Merge 实践操作 2.1 创建和切换分支 2.2 合并分支 2. ...
- 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中的文件进行比较 ...
- Git之 手把手教你使用Git
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...
最新文章
- tomcat7修改内存 win_详解Windows下调整Tomcat启动参数的实现方法
- 1.2 检测和测量图像中的圆形目标
- 自已写的几个分页的存储过程
- java 数据结构 快速入门_Java 数据结构快速入门
- 三十、Java 多线程编程(上篇)
- 九度OJ 1051:数字阶梯求和
- python二维列表的展开_python将三维数组展开成二维数组的实现
- 邮箱与手机做账号的验证实例
- 与网络计算机相比,和通信网络相比,计算机网络最本质的功能是什么
- Linux音频驱动-PCM设备
- 使用SoapUI测试webservice接口详细步骤
- c语言 函数-斐波那契数列,c语言斐波那契数列递归法(示例代码)
- Python入门教程三:显示'Welcome to Python'五次
- cad 打开硬件加速卡_CAD2020 使用图块插入命令特别卡怎么办?
- ajax将监听器值赋值servlet,Java面试问题
- HTML5面试题总结
- 微信小程序云函数请求接口
- 区县公安合成作战中心调研:(一)引言
- 第9个HttpClient 例子,HttpClient+jsoup 扩展获取网站信息
- ArcGis Engine二次开发入门(1)