git merge和rebase合并分支的区别

作者:神秘网友 发布时间:2021-02-23 17:20:14

git merge和rebase合并分支的区别

一、描述

在使用 git 进行版本管理的项目中,在feature分支开发完成,要将其合并到master分支时,我们有两种方式,一种是 git merge 另一种是 git rebase ,通常,我们对git merge 比较熟悉,而对git rebase 使用较少。其实,git rebase 也是极其强大的一种合并方法,下面我们就讨论下merge 和 rebase 的差别已经使用场景。

如下图,你在feature分支上进行开发,于此同时你在master也有新的提交。

为了将master分支合并feature到上,有两种选择,merge 和 rebase。

二、git merge

最简单的方法是使用以下方法将master合并到feature:

git checkout feature
git merge master

或者执行:

git merge feature master

那么在feature上会自动产生一个提交记录(merge commit)

merge 合并之后的结果:

merge合并的优点:

  • 自动创建一个新的commit,记录了真实的commit情况,方便查看记录
  • 如果合并遇到冲突,仅需要修改后重新commit即可

merge的缺点:就是每次合并都会产生一个新的commit, 所以在使用一些git的 GUI工具,特别是commit比较频繁时,就会看到分支线很杂乱。这时如果有问题需要查找就会很困难。

三、git rebase

与git merge功能一致,rebase的目的也是将一个分支的更改合并到另一个分支中去。

rebase 在很多中文翻译中,会翻译为 “变基” 。

执行以下命令:

git checkout feature
git rebase master

如上图所示,rebase的特点:

  • 改变当前分支从master上拉出分支
  • 没有多余的合并历史记录,并且合并后的commit顺序不一定按照commit的提交时间排序
  • 可能会多次解决同一个地方的冲突
  • 提交记录更干净,master上每个commit点都是相对独立完整的功能点

假如我们在rebase的过程中遇到了冲突,我们在解决冲突之后,需要执行:

1. git add

2.git rebase --continue 来继续变基的操作。

3. 如果执行第二步无效,那么可以执行 git rebase --skip

注意:不要执行完 git add 之后执行 git commit

可以看出,feature 分支上的所有提交信息都会被合并到 master 分支上了,这些信息对我们来说不是必要的,我们在 masetr 分支上往往只需要知道合并进来了什么新的功能即可,这些多余的信息可以通过 git rebase 的交互模式进行整合

四、git rebase 交互模式

打开变基的交互模式只需要传入一个参数 -i 即可,同时指定对哪些提交进行处理,例如:

git rebase -i HEAD~4

以上命令指定了对当前分支的最近四次提交进行操作,下面可以使用上面的命令对 feature 分支的提交进行合并:

处理完之后可以使用下面的命令进行提交

五、总结

当需要保留详细的合并信息的时候建议使用git merge,特别是需要将分支合并进入master分支时;当发现自己修改某个功能时,频繁进行了git commit提交时,发现其实过多的提交信息没有必要时,可以尝试git rebase。

参考:

https://www.atlassian.com/git/tutorials/merging-vs-rebasing

https://www.liaoxuefeng.com/wiki/896043488029600/1216289527823648

git merge和rebase合并分支的区别 相关文章

  1. 码云的简单实用

    码云端: 1. 首先登录码云https://gitee.com/,注册一个账号,并登录账号。 2. 创建仓库 3. 安装Git 4. 根据本地端步骤4复制的秘钥,在设置中--SSH公钥进行添加 5. 在左侧选中SSH公钥,进行添加 本地端: 1. 在项目文件中右键打开“Git bash here” 2.在打开

  2. git的基本操作

    Git 1 git和svn git是分布式版本控制工具,svn则是集中式的,版本都是放在集中服务器上,开发人员需要自己从中央服务器下载最新版本。 提到集中式和分布式,最容易想到的就是单点故障问题,如果集中服务器出现了故障,那么就不可用了,但是分布式就不会存在

  3. 官方文档 - 使用GitBook和Typora生成类似官方文档

    本文主要介绍我使用的GitBook + Typora + Git(服务器),来编写类似的官方文档: 一、GitBook介绍 GitBook 是一个基于 Node.js 的命令行工具,可使用 Github/Git 和 Markdown来制作精美的电子书,GitBook 并非关于 [Git]的教程。 GitBook是一款文档编辑工具。它

  4. git使用笔记

    记录一下学习git的代码 git官方使用文档 1.安装git Windows系统Git安装教程(详解Git安装过程) # 任意文件打开 git bash here git --version # 检查安装版本 git config --list # 检查配置信息 2.初始配置 git config --global user.name 'your_name' git c

  5. Jenkins+ansible+Gitlab集成环境搭建

    一、概念图 二、演示过程 [root@gitleb ~]# git config --global http.sslVerify false #关闭安全认证,避免clone 时报错证书错误 [root@gitleb ~]# git clone https://gitlab.example.com/root/ansible-playbook-repo.git[root@gitleb ~]# cd ansible-playb

  6. Hexo Server Gitee Pages

    使用hexo和github搭配搭建个人博客网站一直以来都是非常不错的选择 , 但是github毕竟是国外的网站,服务器遥在异国,以此作为服务器使用网址访问速度稍慢,而且还会时不时出现无法访问的情况,为此使用gitee作为替换是一个比较好的解决方案 添加项目 在gitee

  7. git 是用来管理修改的以及如何撤销修改

    为什么Git比其他版本控制系统设计得优秀 因为Git跟踪并管理的是修改,而非文件。 Git每次修改,如果不用 git add 到暂存区,那就不会加入到 commit 中。 撤销修改 如何撤销在工作区的修改 命令 git checkout -- readme.txt 意思就是,把 readme.txt 文件在工

  8. 企业级git仓库gitlab基于国内源部署

    1 Gitlab介绍 2 Gitlab安装 3 Gitlab配置邮件 4 Gitlab备份还原 4.1 Gitlab备份 4.2 Gitlab还原 4.3 Gitlab迁移 1. Gitlab介绍 Gitlab是一个企业级的git项目仓库,可以通过web界面进行访问公开或者私人项目。Gitlab拥有与github类似的功能,能够浏览代码,管

  9. Git报错Error:RPC failed; curl 18 transfer closed with outstanding read data remaining

    原因:缓存区溢出 httpBuffer加大 git config --global http.postBuffer 524288000git config --list 压缩配置 git config --global core.compression -1 修改配置文件 export GIT_TRACE_PACKET=1export GIT_TRACE=1export GIT_CURL_VERBOSE=1

  10. centos重新分配磁盘

    今天公司的 gitlab突然挂掉了 , 原本以为内存问题,结果发现是磁盘空间不足,可能安装系统的时候没有将剩余的空间挂载到 root上,而是自动分配到了 home,所以要重新分配一下磁盘 df -h 查看磁盘空间 首先你需要备份home文件夹里面的内容 cp -r /home/ /hom

每天更新java,php,javaScript,go,python,nodejs,vue,android,mysql等相关技术教程,教程由网友分享而来,欢迎大家分享IT技术教程到本站,帮助自己同时也帮助他人!

Copyright 2020, All Rights Reserved. Powered by 跳墙网(www.tqwba.com)|网站地图|关键词