git 提交_使用Git-Rebase合并多次提交
在平时的软件开发中,我们每个team使用一个公共仓库(这里说的是Git仓库)。每当有一个新的需求,我们会拉出一个特性分支,然后在这个特性分支上做开发以及提交个人的代码。
我有个习惯就是:为了确保代码的安全性,每天下班前会把个人的本地仓库代码提交到公共仓库。由于每天开发过程中由于各种原因会提交几次代码到个人仓库,这样就导致下班提交代码到公共仓库时,一次提交好几个记录,这样就会是的公共仓库有各种乱七八糟的所有增量修改历史。为了避免太多的提交而造成版本控制的混乱,通常我们推荐将这些提交合并成一个。
使用rebase合并提交
想要合并n条提交记录,有两个方法:
1.从HEAD版本开始往过去数 n 个版本
git rebase -i HEAD~n
2.指定一个合并区间 startpoint 和 endpoint,注意:该区间指定的是一个前开后闭的区间,意思就是startpoint不参与合并
git rebase -i [startpoint] [endpoint]
- -i 的意思是 --interactive,即弹出交互式的界面让用户编辑完成合并操作
- startpoint 和 endpoint 指定了一个编辑区间
- 如果不指定endpoint,则该区间的终点endpoint默认是当前分支HEAD所指向的提交
操作
1.执行 git log 查看提交历史,接下来我们将三次提交合并为一个提交
2.执行 git rebase -i HEAD~3 ,弹出操作窗口
操作说明:
- pick:保留该commit(缩写:p)
- reword:保留该commit,但我需要修改该commit的注释(缩写:r)
- edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
- squash:将该commit和前一个commit合并(缩写:s)
- fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
- exec:执行shell命令(缩写:x)
- drop:我要丢弃该commit(缩写:d)
根据我们的需求,我们将commit内容编辑如下:
pick 85697ee This is first commit.squash ee461c1 This is second commit.squash 326e415 This is third commit.
上面的意思就是把第二次、第三次提交都合并到第一次提交上。
3.然后保存退出,Git会压缩提交历史。如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了
修改以后要记得敲下面的命令:
git add . git rebase --continue
如果你想放弃这次压缩的话,执行以下命令:
git rebase --abort
4.如果没有冲突,或者冲突已经解决,则会出现如下的编辑窗口
我们将三次提交信息合并成一个提交信息
Commit feature branch!#This is first commit.#This is second commit.#This is third commit.
5.编辑完保存即可完成commit的合并了,我们执行一下 git log
然后提交到公共仓库,有没有感觉提交记录清爽了许多,快来试试吧!
欢迎访问我的博客:http://blog.hxpgxt.cn
关注公众号:JAVA九点半课堂,这里有一批优秀的程序猿,加入我们,一起探讨技术,共同进步!回复“资料”获取 2T 行业最新资料!
git 提交_使用Git-Rebase合并多次提交相关推荐
- git合并多次提交为一次提交
** 背景 ** 有时候新人在git上提交代码时,如果不符合要求,会出现反复修改,导致提交次数过多,无法形成有效提交和回退,因为可能中间提交的版本有问题.所以查找一下是否有合并多次提交为一次有效提交的 ...
- git 合并多次提交
文章目录 1 为何要合并多次 commit 2 导致多次 commit 的场景 3 合并本地多次提交 3.1 做3次提交 3.2 开始合并 3.3 rebase 完成后本地 log 3.4 git p ...
- springboot去掉git版本控制_关于 Git 提交这些规范,你都遵守了吗?
来源:人人贷大前端技术中心http://juejin.im/post/5d0b3f8c6fb9a07ec07fc5d0 git是现在市面上最流行的版本控制工具,书写良好的commit message能 ...
- git 避免提交_新秀Git错误避免
git 避免提交 Data engineers are usually more familiar with development tools like Git than data analysts ...
- 中文提交到git乱码_解决Git 中文乱码问题
乱码情景对号入座和解决方案 乱码情景1 在cygwin中,使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如274\232\350\256\256\346\200\273\347\ ...
- git文件共享_与Git共享文件
git文件共享 Git是那些设法将大量现代计算封装到一个程序中的罕见应用程序之一,最终成为许多其他应用程序的计算引擎. 尽管它最着名的是跟踪软件开发中的源代码更改,但它还有许多其他用途,可以使您的生活 ...
- git服务器查看用户信息,git 查看当前git用户_新Git用户使用方法
git 查看当前git用户 This post is a tutorial for new users to set up git and clone and use the first reposi ...
- eclipse查看git地址_使用Git进行版本控制
版本控制软件能够让我们拍摄处于可行状态下的项目的快照.更改项目(比如实现新功能)后,如果项目不能正常运行,可以恢复到前一个可行状态. 通过版本控制软件,我们可以无顾忌地改进项目,不再需要担心项目因为自 ...
- git 删除git管理_使用Git管理多媒体文件
git 删除git管理 Git是专门为源代码版本控制而设计的,因此,主要用于纯文本格式的项目和行业很少使用它. 但是,异步工作流的优点很有吸引力,尤其是在越来越多的行业中,将严肃的计算与认真的艺术创作 ...
最新文章
- OracleJDBC
- 资讯|WebRTC M98 更新
- shell scripts 之 代码量统计
- WCF学习之旅—WCF寄宿前的准备(八)
- 鸿蒙与安卓系统简单对比,绝非追求三分天下。
- 总结常见的ES6新语法特性
- centos环境访问php显示源码,CentOS 6.8 搭建LNAMP环境(五)- PHP7源码安装Redis和Redis拓展...
- mac下安装php环境
- 标准地形图制作系列--接图表的制作方法
- 8086状态标志寄存器的英文含义(调试用
- Node.js学习(第一章:Node.js安装方法及模块化理解)
- 13. Element childNodes 属性
- 分布式任务调度:你知道和不知道的事
- 如何解决3G模块和USB转串口冲突问题
- 《好好学习·成甲》教你如何学习学习
- 计算机休眠快还是关机快,电脑关机、休眠、睡眠、快速启动模式的区别介绍
- 计算机常用的网络安全技术有哪些,简述计算机的网络安全技术有哪些常用技术?...
- python界面编程
- 浅析竞技游戏匹配机制-ELO算法
- rx6700xt相当于什么n卡