git rebase超详细解读,一文搞懂!!!-程序员宅基地

技术标签: github  java  git  后端  

1. Git Rebase的介绍

我们都知道,git rebase可以实现git节点或者分支的合并,但是,真正涉及到为什么要使用git rebase,它的好处又是什么等一些比较实际的问题,很多同学就搞不清楚了,本文聚焦于git rebase,着重讨论该命令的两种妙用,来帮助大家直观的理解这条命令。

写在前面:如果你的分支不只有你在进行开发,那么git-rebase可能会导致提交记录的丢失,但是如果你是在自己的分支上进行开发,那么这无疑是一个很棒的选择。


小伙伴们有兴趣想了解内容和更多相关学习资料的请点赞收藏+评论转发+关注我,后面会有很多干货。我有一些面试题、架构、设计类资料可以说是程序员面试必备!
所有资料都整理到网盘了,需要的话欢迎下载!私信我回复【111】即可免费获取

2. Git Rebase作用一:合并本地的多条提交(commit)记录

一般情况下,我们进行开发时,都是从master分支拉一个自己的开发分支,进行代码修改操作,再git add以及git commit之后将我们修改好的代码git push到远程仓库。

但是,很多情况下,我们并不会仅仅在本地git commit一次,而是会执行很多次,而我们知道,每一个的git commit都会形成一个git节点,而如果我们把这些节点都push到远端,就会使项目的git日志很乱,因为你的这些commit对于其他同学来说都仅仅是为了完成你对应的修改工作,他们希望的是,你能在一次commit操作中把你的修改全部完成,这时,就可以用到我们的git rebase操作了,在git push之前,我们可以将几次本地的commit操作合并,这样,我们推送到远端的commit操作就只有一个了,更利于项目管理。

已经在本地提交了两次:

 

调用git rebase命令合并本地的commit节点

git rebase -i HEAD~2
复制代码

 

经过上面的操作,我们就只剩了一个commit节点,里面包含了我们所有的修改信息,再合并到master中。就不会有开始提到的问题了。

需要注意的是,如果你的commit已经push到远端了,那么就没有办法使用我们的这个技巧了。

2. Git Rebase作用一:分支合并

1.我们先从 master 分支切出一个 dev 分支,进行开发:

git checkout -b feature1
复制代码

 

  1. 其他同学完成了一次 hotfix,并合并入了 master 分支,此时 master 已经领先于你的 feature1 分支了:

 

  1. 使用 rebase 来同步其他同学修改的结果,来保证自己的代码是最新的版本

 

3. Git Rebase的过程

git rebase 做了什么操作呢?

首先,git 会把 feature1 分支里面的每个 commit 取消掉;
其次,把上面的操作临时保存成 patch 文件,存在 .git/rebase 目录下;
然后,把 feature1 分支更新到最新的 master 分支;
最后,把上面保存的 patch 文件应用到 feature1 分支上。

4. 冲突解决

在 rebase 的过程中,也许会出现冲突 conflict。在这种情况,git 会停止 rebase 并会让你去解决冲突。在解决完冲突后,用 git add 命令去更新这些内容。

注意,你无需执行 git-commit,只要执行 continue

git rebase --continue
复制代码

这样 git 会继续应用余下的 patch 补丁文件。

在任何时候,我们都可以用 --abort 参数来终止 rebase 的行动,并且分支会回到 rebase 开始前的状态。

git rebase —abort
复制代码

5. 注意事项

根据上文来看,git-rebase 很完美,解决了我们的两个问题:
1.合并 commit 记录,保持分支整洁;
2.相比 merge 来说会减少分支合并的记录;

但是如果你的分支不只有你在进行开发,那么git-rebase可能会导致提交记录的丢失。

 

那么当他 pull 远程 master 的时候,就会有丢失提交纪录。这就是为什么我们经常听到有人说 git rebase 是一个危险命令,因为它改变了历史,我们应该谨慎使用。

但是,只要你自己的分支上需要 rebase 的所有 commits 历史还没有被 push 过,就可以安全地使用 git-rebase来操作。


 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_69424697/article/details/125106290

智能推荐

解决vscode顶部窗口没有显示原因_volar编辑器分割功能没看到-程序员宅基地

文章浏览阅读6k次。解决vscode顶部窗口没有显示原因的问题(gitlab)产生的原因解决方法欢迎订阅前端进阶订阅号产生的原因vscode 查看→外观 没有选择全屏模式解决方法按F11按键欢迎订阅前端进阶订阅号如果感觉对您的学习工作有帮助,请将它分享给需要的人,感谢支持..._volar编辑器分割功能没看到

TCP/IP基础知识——TCP/IP分层模型-程序员宅基地

文章浏览阅读4.5k次。1、TCP/IP与OSI参考模型:_ip分层

大专生面试阿里P7居然过了,Java高级程序员面试集合-程序员宅基地

文章浏览阅读853次,点赞13次,收藏20次。从设计思想解读开源框架,一步一步到Spring、Spring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!ring5、SpringMVC、MyBatis等源码解读,我都已收集整理全套,篇幅有限,这块只是详细的解说了23种设计模式,整理的文件如下图一览无余!无论是一个初级的 coder,高级的程序员,还是顶级的系统架构师,应该都有深刻的领会到设计模式的重要性。程序员A:B,你这段代码使用的是XXX设计模式对吗?

南加大的计算机科学与工程,2019上海软科世界一流学科排名计算机科学与工程专业排名南加州大学排名第15...-程序员宅基地

文章浏览阅读459次。2019上海软科世界一流学科排名计算机科学与工程专业排名指标首先计算大学在每项指标上的得分,具体为大学在一项指标上的数值除以该项指标的最大值(开根号)再乘以100。然后各指标得分除以100再乘以相应权重进行累加得到该校总分。CNCI为相对指标,论文数量较少时CNCI不够稳定。因此在计算该指标的得分时,一个学科的CNCI最大值设置为该学科所有大学的CNCI平均值的2倍或者该学科所有大学中CNCI的实..._南加大软科排名

css3如何实现字体放大缩小动画_css字体放大缩小动画-程序员宅基地

文章浏览阅读3.2k次。css3实现字体放大缩小动画效果,按钮看起来是动的,以吸引用户_css字体放大缩小动画

RandomAccessFile 读取和存储文件_randomaccessfile读取文件-程序员宅基地

文章浏览阅读375次。RandomAccessFile 读取和存储文件;java读取大文件_randomaccessfile读取文件

随便推点

MATLAB源码-第55期】matlab代码基于m序列的多用户跳频通信系统仿真,输出各节点波形图。_m序列波型-程序员宅基地

文章浏览阅读428次。通常,跳频系统的频率合成器输出什么频率的载波信号是受跳频指令控制的,跳频器是由频率合成器和跳频指令发生器构成的。在时钟的作用下,频率合成器不断地改变其输出载波的频率,跳频指令发生器不断地发出控制指令。首先,为了完成解跳功能,用同相干解调类似的方法将发送信号已知的伪随机的载波与接收信号进行混频,再经过低通滤波器进行滤波,即可得到到解跳后的信号,以便以后基带调制的进行。跳频扩频调制通过伪随机地改变发送载波频率,用跳变的频率来调制基带信号,得到载波频率不断变化的射频信号。3.加性高斯白噪声信道。_m序列波型

Vue工具库VueUse的具体用法_usevue-程序员宅基地

文章浏览阅读2.9w次,点赞11次,收藏71次。前言上次在看前端早早聊大会中, 尤大大再一次提到了 VueUse 的一个库。 好奇了一下,点看看了看。好家伙啊, 我直接好家伙。这不就是曾经我也想自己写一个 vue 版的 hooks 库吗?(因为我觉得 vue3 和 hooks 太像了) 可是我还不太会, 你现在直接把我的梦想给破灭了,下面我们一起来看看吧!VueUse 作者 Anthony Fu 分享可组合的 Vue_哔哩哔哩_bilibili什么是 VueUseVueUse不是Vue.use,它是为Vue 2和3服务的一套Vue Composi_usevue

嵌入式学习之QT学习 ----1 QT环境搭建(Windows)_安装qt程序的时候勾选哪些和嵌入式有关的-程序员宅基地

文章浏览阅读1.7k次。想了又想,之后的设计基于QT系统大概会比较容易一些,就学习一下基础知识吧。1、什么是QT?QT是一个跨平台的、C++、图形用户界面,应用程序开发框架。2、通过学习,将会获得哪些知识?掌握QT环境搭建C++入门掌握使用QT开发windows平台上位机,如:串口调试助手、网络调试助手等掌握发布自己开发的windows上位机掌握在ARM板上移植QT操作系统掌握把QT程序移植到ARM开发板上运行掌握使用QT驱动程序,如:点亮一个LED掌握QT开发手机APP学习远程调试ARM板子上的QT程序_安装qt程序的时候勾选哪些和嵌入式有关的

【算法】三、回溯法_算法策略 回溯法-程序员宅基地

文章浏览阅读978次,点赞2次,收藏10次。回溯法其实就是不断地试探,看前方的路是否可以走,如果不行就退回一步,再换一个办法。_算法策略 回溯法

忘记本地mysql密码修改方法(win10,mysql8.0)_window10清除本地mysql密码-程序员宅基地

文章浏览阅读309次。1.关闭mysql服务2.管理员打开命令提示符,输入mysqld --console --skip-grant-tables --shared-memory输入后回车,放在一旁。3.再新建一个cmd窗口(用管理员身份打开)—win键+R,输入mysql -uroot -p然后回车键(Enter),弹出输入密码,不理,再次回车键(Enter)4.依次输入以下操作先刷新一下权限表:flush privileges;然后我们改密码:输入ALTER USER 'root'@'localh_window10清除本地mysql密码

ZXCLOUD R5300 G3的服务器安装ESXI6.7镜像前篇-制作ESXI6.7定制版-程序员宅基地

文章浏览阅读684次。VMware vSphere Hypervisor (ESXi) Offline Bundle(脱机捆绑包)镜像。服务器安装版本与平时安装版本有所不同,由于服务器缺少阵列卡驱动,需将阵列卡驱动注入。注意:将镜像刻录到U盘时写入方式为USB-HDD+ V2或USB-ZIP+ V2。文件放入文件夹中,在文件夹中再创建一个文件夹,将。定制版镜像,阵列卡驱动完成注入!最新版(自己下载,以上所需文件。在“文件”选项中打开刚才生成的。下载自己去淘宝买一次性下载)文件,选中解除锁定,并应用。注意:下载镜像时需下载。_esxi6.7镜像

推荐文章

热门文章

相关标签