Git小技巧之使用Rebase命令合并提交
想要获取更多文章可以访问我的博客 - 代码无止境。
在日常的开发过程中,我们一个功能可能会有很多次提交。而且我们公司的开发是不允许直接往公司仓库提交代码,所以需要fork到自己的仓库然后merge过去,这样就会导致拉代码会产生很多的commit,而这些commit其实是没有什么实际意义的。提交记录过多会导致代码review非常困难,那么今天我们就来介绍一个非常实用的命令 - git rebase,它可以将若干次提交合并成一个提交,下面我们就一起来见证一下这个骚操作吧。
准备
首先我们需要准备一个前提环境:
1.初始化一个git仓库。
mkdir git-test
cd git-test
git init
2.创建一个README.md文件。
3.创建若干个提交(>1)。
我们执行git log命令会得到如下结果,一共有三次提交记录,我们将通过git rebase命令将后两个提交合并成一个commit:
$ git log
commit 8d27ccf975e5ce4af8fd12fa75534b78fdc5b065 (HEAD -> master)
Author: 码无止境 <gancy.programmer@gmail.com>
Date: Sun Jun 16 18:00:57 2019 +0800
第三次提交
commit c953ae97af01e49d7f0ad959b42b91334a6726f3
Author: 码无止境 <gancy.programmer@gmail.com>
Date: Sun Jun 16 18:00:30 2019 +0800
第二次提交
commit 53407186cedef4be98d6001a69ee33d3a8d745fc
Author: 码无止境 <gancy.programmer@gmail.com>
Date: Sun Jun 16 18:00:06 2019 +0800
第一次提交
合并提交记录
1.首先我们执行git rebase -i HEAD3,这里的HEAD2代表的合并最近两次提交,命令执行后会进入到一个vi编辑页面,如下所示:
2.编辑之后的内容为:
p c953ae9 第二次提交
s 8d27ccf 第三次提交
3.编辑好后,保存(:wq)
4.然后会进入到一个编辑提交信息的界面(vi编辑),我写的”合并提交”,我们看最后合并提交的时间和第二次提交的时间一直,代表上面的合并是将第三次提交合并到了第二次提交。
5.保存消息后就执行成功了,我们再执行以下git log命令查看,会发现如下效果
$ git log
commit b1ab9f0af528aa96c333b2287c85d06e9fea891b (HEAD -> master)
Author: 码无止境 <gancy.programmer@gmail.com>
Date: Sun Jun 16 18:00:30 2019 +0800
合并提交
第二次提交
第三次提交
commit 53407186cedef4be98d6001a69ee33d3a8d745fc
Author: 码无止境 <gancy.programmer@gmail.com>
Date: Sun Jun 16 18:00:06 2019 +0800
第一次提交
合并时的几个命令介绍
- pick:正常选中
- reword:选中,并且修改提交信息;
- edit:选中,rebase时会暂停,允许你修改这个commit
- squash:选中,会将当前commit与上一个commit合并
- fixup:与squash相同,但不会保存当前commit的提交信息
- exec:执行其他shell命令
Git小技巧之使用Rebase命令合并提交的更多相关文章
- Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具
前言 本文主要写给使用命令行来操作Git的用户,用于提高Git使用的效率.至于使用命令还是GUI(Tortoise Git或VS的Git插件)就不在此讨论了,大家根据自己的的喜好选择就好.我个人是比较 ...
- Git 小技巧
分享git的几个小技巧,后面会根据使用补充.目前包括git撤销本地修改.git回退到前n个版本.git多用户提交冲突解决.git 命令简化.欢迎大家补充^_* 1.git撤销本地修改 git rese ...
- git小技巧--如何从其他分支merge个别文件或文件夹
在实际工作中,一个大型的项目或版本迭代可能不是一次上线,可能会分好几次上线,这时候就会涉及创建多个分支,进行分别开发. 创建分支 功能分为2个分支,分别为A.B. A上面有个列表页功能 B上面有个详情 ...
- Python小技巧:使用一行命令把你的电脑变成服务器
不知道你有没有遇到这么一种情况,就是你有时候想要把电脑上的一些东西传输到你的手机或者 Pad ,你要么需要使用数据线连接到电脑,有时候还要装各种驱动才可以进行数据传输,要么需要借助第三方的工具,在局域 ...
- git小技巧--提取/合并某分支的部分文件
软件开发基本都是多个feature分支并行开发,而在上线前有可能某个分支的开发或测试还没有完成,又或者是产品调整,取消了该分支功能的上线计划,我们在release前不合并该分支即可,然而如果该分支中的 ...
- git小技巧之分支、关联远程仓库、回滚、解决.gitignore不生效等
1.分支管理 新建并切换分支:git checkout -b <name>新建本地分支并关联到远程分支git checkout -b myRelease origin/Release合并某 ...
- Git小技巧:VIM中如何填写注释信息
使用Git命令行工具的时候,经常一不小心就进入VIM界面,例如git commit没有填写任何描述信息.对于习惯了Windows可视化操作界面的用户,可能一下子会觉得无所适从,只能在键盘上一顿短按.下 ...
- Git 使用技巧(一):合并分支
在合并分支之前最好保证你所有的分支都是最新的,所以你可以使用 git pull origin branchName 来拉取远程仓库到本地仓库. 假如有一个 dev 分支需要合并到 master 分支中 ...
- 【转载】运维小技巧:使用ss命令代替 netstat
转自:https://www.91ri.org/12470.html ss是Socket Statistics的缩写. 顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类 ...
随机推荐
- mvn 命令在command prompt无法识别
Download maven from this website: https://maven.apache.org/download.cgi 解压binary包后放到一个位置,比如C:\apache ...
- 【全面解禁!真正的Expression Blend实战开发技巧】第二章 你好,UI设计师
原文:[全面解禁!真正的Expression Blend实战开发技巧]第二章 你好,UI设计师 你好,UI设计师 曾几何时我从没想过要与艺术家打交道,但是Silverlight改变了这一切.UI设计师 ...
- 2018-4-25 1.如何在GitHub上新建一个新的项目并下载该项目及如何提交新的文件
- axure跨inframe传递参数
在global variable添加loginuser变量 在link to and external url or file添加如下:[[Item.action]]#loginuser=[[logi ...
- C# 生成txt日志文件
/// <summary> /// 创建日志文件,每天一个 /// </summary> /// <param name="logContent"&g ...
- UWP项目生成错误: 未能使用“CompileXaml”任务的输入参数初始化该任务。“CompileXaml”任务不支持“PlatformXmlDir”参数。请确认该参数存在于此任务中,并且是可设置的公共实例属性。
UWP项目生成错误: 未能使用“CompileXaml”任务的输入参数初始化该任务.“CompileXaml”任务不支持“PlatformXmlDir”参数.请确认该参数存在于此任务中,并且是可设置的 ...
- WPF应用程序嵌入第三方exe
把其它应用嵌入到C#窗口 源代码-CSDN下载 https://download.csdn.net/download/aiqinghee/10652732 WPF应用程序嵌入第三方exe - gao2 ...
- C#如何使用PythonTuple类型
示例代码: new PythonTuple(new[] { 1, 2, 3 }); PythonTuple myTuple = PythonOps.MakeTuple(new object[] { 1 ...
- Node.js模板引擎学习----ejs
环境:windows+node.js+express 一.安装ejs 打开cmd窗口,输入npm install ejs -g,等待下载安装完成. 二.使用 调用过程中使用路由机制和模板,路由请求地址 ...
- 【码云周刊第 23 期】Web 高效开发必备的 PHP 框架(从这里学起)good
码云项目推荐 1.项目名称:多功能 THinkPHP 开源框架 项目简介:使用 THinkPHP 开发项目的过程中把一些常用的功能或者第三方 sdk 整合好,开源供亲们参考,如 Auth 权限管理.支 ...