当前位置: 首页 > news >正文

git rebase实战操作

背景

合并代码可以选择git merge和git rebase,两者的区别是git rebse可以让你保留一条直线提交历史记录,方便查看。merge则不会。

操作命令

根据git flow规范,feture分支都是基于develop分支切的,我们开发完自己的feature分支以后,可以进行git rebase origin develop,然后再切到develop分支进行merge操作,当然你执行git rebae origin develop以后,也可以直接在github上执行PR操作,即pull request。

综上,主要2个步骤:

  • git rebase
  • git merge

多一步git rebase是因为我想让develop分支上面保留一条直线历史提交记录,然后这样比较方便看提交记录,不至于那么乱。

具体命令:

比如我开发完feature/1225分支了以后,我现在要进行git rebase和git merge操作

  • git rebase
git fetch --all && git rebase -i origin/develop

1、如何将feature/1225分支 的多个commit合并成一个? 

你运行上述命令以后,会跳到另外一个页面,你将除了第一个pick,后面所有的pick 改成s,然后按下esc键,然后wq退出

2、如何将feature/1225分支 的多个commit msg合并成一个? 

删除留下一个即可。 

  • git merge

发起PR即可

总结: 

rebase 特点:会合并之前的commit历史
优点:得到更简洁的项目历史,去掉了merge commit
缺点:如果合并出现代码问题不容易定位,因为re-write了history

如果你想要一个干净的,没有merge commit的线性历史树,那么你应该选择git rebase
如果你想保留完整的历史记录,并且想要避免重写commit history的风险,你应该选择使用git merge

注意:

合并时如果出现冲突需要按照如下步骤解决

  • 修改冲突部分
  • git add
  • git rebase --continue
  • (如果第三步无效可以执行 git rebase --skip

不要在git add 之后习惯性的执行 git commit命令。

 

相关文章:

  • mac系统如何更改用户名及头像
  • internal/modules/cjs/loader.js:883 throw err;
  • Node: 001全局对象和模块化-如何给node传递参数?
  • Node: mysql学习笔记001
  • Node: MySQL学习笔记002
  • yarn错误The engine “node“ is incompatible with this module
  • Node: 001全局对象和模块化-常见的全局对象
  • node:快速启动一个列表服务器
  • vscode左下角git分支不见了(已解决)
  • 调用百度地图
  • mac电脑如何下载git
  • vscode中setting.json配置
  • css画一个卡通动画
  • 在 vue 中使用 vue-typed-js 实现打字机效果
  • mac电脑安装item2、oh-my-zsh
  • angular学习第一篇-----环境搭建
  • CentOS6 编译安装 redis-3.2.3
  • co模块的前端实现
  • mysql外键的使用
  • Object.assign方法不能实现深复制
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • REST架构的思考
  • SpingCloudBus整合RabbitMQ
  • Spring Cloud中负载均衡器概览
  • 大快搜索数据爬虫技术实例安装教学篇
  • 聚类分析——Kmeans
  • 每天一个设计模式之命令模式
  • 浅谈Golang中select的用法
  • 悄悄地说一个bug
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 说说动画卡顿的解决方案
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 我建了一个叫Hello World的项目
  • 一些关于Rust在2019年的思考
  • Linux权限管理(week1_day5)--技术流ken
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • #13 yum、编译安装与sed命令的使用
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (LeetCode 49)Anagrams
  • (阿里云万网)-域名注册购买实名流程
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (五)网络优化与超参数选择--九五小庞
  • (一) springboot详细介绍
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • *** 2003
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .net 怎么循环得到数组里的值_关于js数组
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NET程序员迈向卓越的必由之路