首页 > 其他分享 >Git Rebase和Merge-cnblog

Git Rebase和Merge-cnblog

时间:2024-01-19 18:44:06浏览次数:25  
标签:Git merge Rebase Merge git master 提交 rebase 分支

Git Rebase和Merge

Rebase

首先,先看一下git rebase的操作图:

在B点创建出来一个新的分支feature,进行了两个commit C和D,master分支则进行了一次提交M, 然后在feature分支上执行

image-20240119114057953

然后执行git rebase master

image-20240119114252255

这样对变基(rebase)既可清楚理解。

git rebase简单来说就是将C和D的提交抽取出来,然后拉取到master的最新版本,在将C和D的提交加上去,解决好冲突,变成了C’和D‘。

作用:在主干开发分支合并的开发流程中,可以在提交之前rebase master的代码,然后再去提交,可以用来解决不必要的代码冲突。

Merge

merge操作就是简单的将其它分支的提交合并到当前分支。这里需要介绍一个新的概念 fast-forward

image-20240119122020578

再当前的分支情况下,在master上执行git merge hotfix,此时会发生fast-forward。因为hotfix分支是基于master的最新的提交进行的开发,显然可以直接将hotfix分支上的提交直接给master分支即可,即修改master指针的指向位置。(可以使用--no-ff参数来禁止fast-forward)

git merge后版本状态变为如下图:

image-20240119122311246

此时,如果想要merge iss53这个分支,就不会发生fast-forward,因为iss53是基于c2开发的,而master目前已经到了c4,所以两者合并会产生一个新的合并的提交。

image-20240119122443518

大量使用merge的问题就是当分支数量过多,git的commit log graph会变得庞杂,难以观察。可以再iss53分支merge进master之前进行一次rebase, 这样可以触发fast-forward,从而让提交历史变得干净。

但很多公司疑似不推荐使用rebase, 并且会禁止使用,因为rebase会导致难以分清楚一个feature的开发都是那些commit,且可能会改变提交的时间线。不过我司目前没有禁止使用~先简单了解了解

标签:Git,merge,Rebase,Merge,git,master,提交,rebase,分支
From: https://www.cnblogs.com/xyfhsy/p/17975361

相关文章

  • 无涯教程-PDFBox - PDF合并(Merge)
    在上一章中,无涯教程已经看到了如何将给定的PDF文档拆分为多个文档。现在学习如何将多个PDF文档合并为一个文档。合并多个PDF文档您可以使用名为PDFMergerUtility的类将多个PDF文档合并为一个PDF文档,该类提供了将两个或多个PDF文档合并为一个PDF文档的方法。以下是合并多个PD......
  • 初次使用git
    1.在gitee新建仓库2.在本地文件夹下初始化仓库:gitinit3.提交所有文件到缓冲区:gitadd.4.提交缓冲区文件到本地仓库:gitcommit-m"initialcode"5.关联本地仓库与远程仓库:gitremoteaddorigingitee仓库地址第6到10步为错误命令。6.gitpulloriginmaster提示有偏离......
  • GitHub DeskTop 汉化教程
    参考文章:GithubDesktop汉化(最新版,支持Win、Mac、Linux平台)下载安装GitHubDeskToGitHubDeskTop官网下载地址:https://desktop.github.com/到官网下载并安装GitHubDeskTop,安装的时候要用默认路径!!!安装的时候要用默认路径!!!安装的时候要用默认路径!!!下载汉化工具GitHubDeskTop......
  • gitlab-runner实现gitlab上的代码自动打包发布——windows版
    gitlab中的项目,每次打包发布都比较麻烦,需要自己本地打包然后传输到服务器,再启动。考虑实现一种自动打包发布的方法。1)考虑使用jenkins实现,但是需要jdk11(当前环境不能升级),还有一些插件(这个虽然可以离线安装,但是需要高版本的jenkins,相对应的又依赖高版本的jdk)2)考......
  • Jira 母公司全面停服 Server 产品,用户如何迁移至极狐GitLab
    Jira母公司即将全面停服旗下部分Server端产品的销售和服务支持!Jira母公司Atlassian在几年前确定了公司的战略为“全面上云”,为此做出了停止Server产品的销售和支持。整个时间线从2021年2月2日开始,直到今年2月15日,彻底停止Server端产品的服务支持。Server......
  • gitlab账号密码忘记(docker部署)
    1.进入容器dockerexec-itgitlabexec 2.修改密码sugitgitlab-railsconsole-eproduction//可以带上-e参数查看版本,不同版本修改用户密码有细微差别u=User.where(id:1).firstu.password='Qwer@1234'u.save[root@DevOPS~]#dockerexec-itgitlabbashroot@a3674......
  • Git自建文档
    Git学习笔记Gitcommit //在当前分支下创建新分支Gitbranch分支名 //当前分支后创建新分支Gitbranch-f分支名head~3//允许当前分支强制移动到前方3步的父head下Gitcheckout分支名 //切换到分支Master^ //master向上移动一个提交记录Master~<nu......
  • Git(千锋)
    目录Git一.走入Git1.Git介绍2.Git对比SVN3.Git安装二.Git常用命令1.设置用户签名2.初始化本地库3.Git工作区、暂存区和版本库4.gitadd5.gitcommit6.gitrevert与gitreset三.Git分支1.初识分支2.创建分支3.切换分支4.合并分支5.删除分支四.远程仓库1.创建一个远程仓库2.添......
  • Git 学习
    Git学习git分布式版本控制系统.每一个开发者都同事拥有一个相当于当前文件操作的工作区与一个用于存储该项目所有版本,分支,以及标签的本地版本库.开发者A开发者BAAA->BA->CA->B->->C->D开发者A导入了开发者B所做的修改,......
  • GitHug 攻略
    GitHug攻略Githugisdesignedtogiveyouapracticalwayoflearninggit.Ithasaseriesoflevels,eachrequiringyoutousegitcommandstoarriveatacorrectanswer.https://github.com/Gazler/githuglevel1初始化一个仓库gitinitlevel2设置git的用户......