首页 > 其他分享 >详述 Git 的 rebase 命令使用方法

详述 Git 的 rebase 命令使用方法

时间:2022-09-03 17:56:53浏览次数:53  
标签:详述 Git rebase 合并 命令 master commit 分支

在基于 Git 的开发过程中,我们很容易遇到合并代码的情况,例如我们从 master 分支拉取了一个 feature 分支,当我们开发到一段时间之后,可能需要将 master 的代码合并到我们当前的 feature 分支之中。

这时,我们有两个选择,一个是使用git merge命令,一个是使用git rebase命令,这两个命令都是用来合并代码的,但却有一些差异。在本文中,我们主要讲述git rebase命令的使用方法,也会简单介绍这两个命令的差异。

fork_master
如上图所示,我们从 master 分支拉取了一个名为 feature 的分支,并且在拉取新分支之后,有过三次提交记录;同时,master 分支在我们拉取 feature 分支之后,也有过两次提交记录。现在我们已经构造了背景,接下来我们合并代码。

merge_master
首次,我们使用merge命令,其命令形式一般为git merge --no-ff master,即表示将 master 的代码合并到 feature 分支,其中--no-ff参数是为了保留 master 分支的提交记录。如上图所示,在使用merge命令进行代码合并之后,Git 会自动创建一个新的 commit 用来表示当前的合并操作,此 commit 记录了 master 代码合并到 feature 分支时产生的所有改动。

rebase_master
接下来,我们使用rebase命令,其命令一般形式为git rebase feature,即表示在 master 分支上执行rebase命令,将 feature 分支的代码合并到 master 分支。如上图所示,在使用rebase命令之后,Git 会合并两个分支的 commit 记录,其规则为「在基准分支上合并目标分支的代码,会将目标分支的提交记录全部前置到基准分支的最新提交记录之前」,就如上面这样,我们在 master 分支上使用了rebase命令之后,Git 将 feature 分支上面的所有 commit 记录都前置到了 master 分支的最新 commit 记录之前。

在这里,需要注意的是:rebase是以 commit 为维度的,按 commit 提交的顺序依次进行合并操作;如果在合并的过程中,某个 commit 遇到了冲突,则需要我们先解决该冲突,然后才能继续进行合并操作。特别地,在我们解决冲突之后,需要使用git add + 冲突文件命令将当前冲突标记为已解决,然后使用git rebase --continue命令继续合并操作。

通过上面的描述,我们能发现mergerebase有一个很明显的差异,那就是当遇到冲突的时候,使用merge命令,我们只需要解决一次冲突即可;使用rebase命令,我们则需要依次解决每一个冲突。

对于 Git 的rebase命令,其除了能进行代码合并之外,还有一个常用的功能,那就是将多个 commit 合并为一个,仍然以上面的 feature 分支为例,我们将其从 master 分支拉取之后,进行了三次提交,现在我们将这三个提交结论合并为一个,其命令一般形式为:

  • git rebase -i HEAD~N

其中,N为我们需要合并的 commit 记录的数量,因为示例中是三次提交记录,所以在此场景下,将N替换为3即可。

在执行完上面的命令之后,我们会进入vi或者vim文件编辑器:

rebase_test
如上图所示,pick标识了我们的三次提交记录,按i建进入编辑模式,保留第一个pick,然后将后面两个pick修改为s或者f,然后键入:wq保留修改。最后,为了将变更同步到远程分支,我们需要使用git push -f命令,其中参数-f表示强制提交。

标签:详述,Git,rebase,合并,命令,master,commit,分支
From: https://www.cnblogs.com/javaxubo/p/16653177.html

相关文章

  • Git使用出现[email protected] Permission denied publickey. 处理
    Git使用出现[email protected]:Permissiondeniedpublickey.处理进入gitbash界面然后:第一步,gitconfig--global--list验证邮箱与GitHub注册时输入的是否一致第二步......
  • git解决The authenticity of host ‘github.com (192.30.255.112)‘ can‘t be establ
    git解决Theauthenticityofhost‘github.com(192.30.255.112)‘can‘tbeestablished问题报错完整信息Theauthenticityofhost'github.com(20.205.243.166)'c......
  • 利用 SSH 完成 Git 与 GitHub 的绑定
    如上图所示,进入Settings页面后,再点击SSHandGPGKeys进入此子界面,然后点击NewSSHkey按钮:在「史上最简单的GitHub教程」中,我们已经对GitHub有了一定的了解,包括创建仓......
  • Git 初体验及其常用命令介绍-上
    在「Git的安装流程及步骤」一文中,我们已经把Git安装成功了,现在,就让我们一起体验Git的魅力吧!不知道大家是否还记得,在Git安装完成的时候,我们曾在GitBash中输入git......
  • Git 初体验及其常用命令介绍-下
    在前一篇博文「Git初体验及其常用命令介绍(上)」中,我们已经了解了Git的一些常用命令了,包括status、init、add、commit和log等,下面我们接着上一篇博文的内容,继续介绍Git......
  • GitHub 主页介绍及修改个人信息
    接着「敲开GitHub的大门-注册账号」一文的内容,我们继续往下介绍:注意:下面的是之前的版本,现在界面已经有所更新了,而且浏览器可以帮助我们翻译成中文,也是比较方便的.......
  • 创建 GitHub 仓库的步骤及方法
    创建GitHub仓库的步骤及方法在「GitHub主页介绍及修改个人信息」一文中,我们已经对GitHub的个人主页有了一些了解,并且完成了对个人信息的修改。但是美中不足的是,我们......
  • 深入理解 GitHub Flow
    深入理解GitHubFlowGitHubFlow是一个轻量级,基于分支的工作流,支持团队和项目的定期部署。本指南介绍了GitHubFlow的工作原理。Step1.创建分支(Createabranch)......
  • Hello World · GitHub 指南
    HelloWorld·GitHub指南简介HelloWorld项目是计算机编程历史中悠久的传统。在我们学习新知识的时候,她也是一个简单的练习。现在,就让我们一起了解GitHub吧!你将学......
  • 初识GitHub · 简介篇
    初识GitHub·简介篇1前言GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。GitHub于2008年4月10日......