在平时的软件开发中,我们每个team使用一个公共仓库(这里说的是Git仓库)。每当有一个新的需求,我们会拉出一个特性分支,然后在这个特性分支上做开发以及提交个人的代码。

我有个习惯就是:为了确保代码的安全性,每天下班前会把个人的本地仓库代码提交到公共仓库。由于每天开发过程中由于各种原因会提交几次代码到个人仓库,这样就导致下班提交代码到公共仓库时,一次提交好几个记录,这样就会是的公共仓库有各种乱七八糟的所有增量修改历史。为了避免太多的提交而造成版本控制的混乱,通常我们推荐将这些提交合并成一个。

使用rebase合并提交

想要合并n条提交记录,有两个方法:

1.从HEAD版本开始往过去数 n 个版本

git rebase -i HEAD~n

2.指定一个合并区间 startpoint 和 endpoint,注意:该区间指定的是一个前开后闭的区间,意思就是startpoint不参与合并

git rebase -i [startpoint] [endpoint]
  • -i 的意思是 --interactive,即弹出交互式的界面让用户编辑完成合并操作
  • startpointendpoint 指定了一个编辑区间
  • 如果不指定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合并多次提交相关推荐

  1. git合并多次提交为一次提交

    ** 背景 ** 有时候新人在git上提交代码时,如果不符合要求,会出现反复修改,导致提交次数过多,无法形成有效提交和回退,因为可能中间提交的版本有问题.所以查找一下是否有合并多次提交为一次有效提交的 ...

  2. git 合并多次提交

    文章目录 1 为何要合并多次 commit 2 导致多次 commit 的场景 3 合并本地多次提交 3.1 做3次提交 3.2 开始合并 3.3 rebase 完成后本地 log 3.4 git p ...

  3. springboot去掉git版本控制_关于 Git 提交这些规范,你都遵守了吗?

    来源:人人贷大前端技术中心http://juejin.im/post/5d0b3f8c6fb9a07ec07fc5d0 git是现在市面上最流行的版本控制工具,书写良好的commit message能 ...

  4. git 避免提交_新秀Git错误避免

    git 避免提交 Data engineers are usually more familiar with development tools like Git than data analysts ...

  5. 中文提交到git乱码_解决Git 中文乱码问题

    乱码情景对号入座和解决方案 乱码情景1 在cygwin中,使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如274\232\350\256\256\346\200\273\347\ ...

  6. git文件共享_与Git共享文件

    git文件共享 Git是那些设法将大量现代计算封装到一个程序中的罕见应用程序之一,最终成为许多其他应用程序的计算引擎. 尽管它最着名的是跟踪软件开发中的源代码更改,但它还有许多其他用途,可以使您的生活 ...

  7. 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 ...

  8. eclipse查看git地址_使用Git进行版本控制

    版本控制软件能够让我们拍摄处于可行状态下的项目的快照.更改项目(比如实现新功能)后,如果项目不能正常运行,可以恢复到前一个可行状态. 通过版本控制软件,我们可以无顾忌地改进项目,不再需要担心项目因为自 ...

  9. git 删除git管理_使用Git管理多媒体文件

    git 删除git管理 Git是专门为源代码版本控制而设计的,因此,主要用于纯文本格式的项目和行业很少使用它. 但是,异步工作流的优点很有吸引力,尤其是在越来越多的行业中,将严肃的计算与认真的艺术创作 ...

最新文章

  1. OracleJDBC
  2. 资讯|WebRTC M98 更新
  3. shell scripts 之 代码量统计
  4. WCF学习之旅—WCF寄宿前的准备(八)
  5. 鸿蒙与安卓系统简单对比,绝非追求三分天下。
  6. 总结常见的ES6新语法特性
  7. centos环境访问php显示源码,CentOS 6.8 搭建LNAMP环境(五)- PHP7源码安装Redis和Redis拓展...
  8. mac下安装php环境
  9. 标准地形图制作系列--接图表的制作方法
  10. 8086状态标志寄存器的英文含义(调试用
  11. Node.js学习(第一章:Node.js安装方法及模块化理解)
  12. 13. Element childNodes 属性
  13. 分布式任务调度:你知道和不知道的事
  14. 如何解决3G模块和USB转串口冲突问题
  15. 《好好学习·成甲》教你如何学习学习
  16. 计算机休眠快还是关机快,电脑关机、休眠、睡眠、快速启动模式的区别介绍
  17. 计算机常用的网络安全技术有哪些,简述计算机的网络安全技术有哪些常用技术?...
  18. python界面编程
  19. 浅析竞技游戏匹配机制-ELO算法
  20. rx6700xt相当于什么n卡

热门文章

  1. 强烈推荐!分享一个持续连载的《特征工程小锦囊》项目,代码已开源!
  2. ICCV 2019 | SPM:单阶段人体姿态估计解决方案
  3. 互联网1分钟 |1127
  4. 移动IM开发指南1:如何进行技术选型
  5. 互联网+金融+IM的未来,你懂?
  6. Count The Repetitions
  7. 基础: 一、Android环境搭建
  8. .NET Core微服务之路:基于Consul最少集群实现服务的注册与发现(一)
  9. 一周学习总结PPT-学会VLOOKUP函数,1分钟搞定数据汇总
  10. 从本地上传项目到 github 以及从github 下载项目到本地环境