首页 > 其他分享 >git中rebase和merge的区分

git中rebase和merge的区分

时间:2023-01-08 18:12:22浏览次数:36  
标签:git 记录 rebase merge master 模块 分支

前言

git我们已经足够熟悉了,也许项目中我们常用的是merge命令,有时也用到rebase,但是就是不清楚两者的区别以及背后的机制原理,接下来进行讲解。

相同点

两者都可以合并代码。

不同点

比如现在在某个子分支执行git rebase(merge) master操作。

merge:将在子分支的所有提交记录成一次commit,保留在记录中。(下图的E即为该记录)
rebase:不会保留commit记录,直接将分支中的内容排到master的记录之后。如图:合并前版本如下:

基础扫盲篇:git中rebase和merge的区分

使用merge操作后如下图:

基础扫盲篇:git中rebase和merge的区分

使用rebase操作后如下图:

基础扫盲篇:git中rebase和merge的区分

简单总结就是:merge就是将自己版本合并到master分支下。rebase就是覆盖的操作。

使用场景:

场景一

一直在某个子分支开发功能。你还没开发完,然后你的同事告诉你,你引用的其他模块的内容有更新,你需要拉取一下最新的master代码更新一下该的模块。

推荐使用rebase。该模块的内容更新和你功能无关,合并代码也不会影响你的功能,无需保留该记录。如果使用merge,在开发周期长的情况下,会创造很多无用的commit记录。

场景二

你和同事两个人在开发同一个模块,你同事开发的部分功能已经合并到了master,通知你更新一下最新的模块代码。

推荐使用merge。你和同事开发的是同一模块,很可能他的某个改动会导致你的功能出问题,如果出了问题,保留记录能便于后期排查问题。(如果从逻辑上可以判断不会有影响,那么使用rebase也可以)

场景三

现在有个子分支模块已经开发完,master分支需要将这个分支的内容合并进来。

推荐使用merge。使用merge可以留有提交记录,如果该模块出了问题,方便后面排查问题。

注意点:

假如使用rebase,一定要遵守rebase黄金法则,共享的public分支不能rebase,

通俗的说,当一个分支是一个人开发处理的,才可以rebase,假如一个分支被多个人共享开发,然后rebase,那就乱套了,处理起来复杂;


以上为全部内容。

标签:git,记录,rebase,merge,master,模块,分支
From: https://www.cnblogs.com/LoveShare/p/17035017.html

相关文章

  • DevOps实战系列【第五章】:基于Gitlab/Maven/Jenkins/Docker实战案例详解
    个人亲自录制全套DevOps系列实战教程:​​手把手教你玩转DevOps全栈技术​​从创建Jenkins的job开始1.gitlab设置:我们从新建一个jenkins任务开始,建一个自由风格项目,我们暂时......
  • DevOps实战系列【第二章】:详解Gitlab环境及搭建
    个人亲自录制全套DevOps系列实战教程:​​手把手教你玩转DevOps全栈技术​​gitlab就不多说了,这个东西现在大多数公司内部都在使用,它分为社区和企业版本,社区版本ce是免费的......
  • 当github双因子认证遇到鸿蒙手机
    国内手机号,收不到github的短信了,也不能再次修改HTML来添加国内的手机号,来激活Github的双因子认证。我的手机是鸿蒙系统,所以 MicrosoftAuthenticator 也不能直接使用。......
  • git与vscode
    一、创建库与同步:github上创建一个仓库,复制httpsvscode上ctrl+shift+p,克隆即可编写好代码,选择推送,即可完成同步二、克隆他人库,并不跟踪直接克隆后,删除.git等文件三......
  • git 命令
    一:设置代理gitconfig--globalhttps.proxy​​https://127.0.0.1:10809​​gitconfig--global--unsethttps.proxygitconfig--list二:版本冲突gitpull时报错:Yourlo......
  • github美化
    ​​https://shields.io/#/​​github信息填上自己github信息即可##其他标签​​​​......
  • git常用操作
    四个区:①Workspace:工作区②Stage:暂存区③Repository:本地仓库④Remote:远程仓库显示未追踪文件gitstatusgit初始化gitinit拉取远程仓库http协议htt......
  • CICD dotnet 自动化部署 jenkins+gitee
    问题描述:在Centos8系统中,使用dockerrun时,出现如下报错:EmulateDockerCLIusingpodman.Create/etc/containers/nodockertoquietmsg.Error:open/proc/self/uid_map......
  • git之修改已经提交的commit信息
    1、执行命令gitrebase--interactivecommitId^,以交互方式进行进行rebase操作;gitrebase可以实现git节点或者分支的合并2、进入编辑页面后,会列出此次rebase操作所......
  • Git之使用GitHub搭建远程仓库
    在上一节中,我们学习了如何使用Git,构建我们的本地仓库,轻松的实现了版本控制以及代码还原,修改日志查看等;读者肯定不满足与本地是吧,假如是多个人一起来开发一个程序呢?我们需要......