在使用 Git 作为版本控制的时候,我们可能会由于各种各样的原因提交了许多临时的 commit,而这些 commit 拼接起来才是完整的任务。那么我们为了避免太多的 commit 而造成版本控制的混乱,通常我们推荐将这些 commit 合并成一个。

一、查看提交历史–git log

首先你要知道自己想合并的是哪几个提交,可以使用git log命令来查看提交历史,假如最近4条历史如下:

commit 3ca6ec340edc66df13423f36f52919dfa3......commit 1b4056686d1b494a5c86757f9eaed844......commit 53f244ac8730d33b353bee3b24210b07......commit 3a4226b4a0b6fa68783b07f1cee7b688.......

历史记录是按照时间排序的,时间近的排在前面。

二、git rebase

想要合并1-3条,有两个方法

2.1 从HEAD版本开始往过去数3个版本

git rebase -i HEAD~3

2.2 指名要合并的版本之前的版本号

git rebase -i 3a4226b

请注意3a4226b这个版本是不参与合并的,可以把它当做一个坐标

三、选取要合并的提交

3.1 执行了rebase命令之后,会弹出一个窗口,头几行如下:

pick 3ca6ec3   '注释**********'pick 1b40566   '注释*********'pick 53f244a   '注释**********'

3.2 将pick改为squash或者s,之后保存并关闭文本编辑窗口即可。改完之后文本内容如下:

pick 3ca6ec3   '注释**********'s 1b40566   '注释*********'s 53f244a   '注释**********'
  • pick 的意思是要会执行这个 commit
  • squash 的意思是这个 commit 会被合并到前一个commit

3.3 然后保存退出,Git会压缩提交历史,如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了。修改以后要记得敲下面的命令:

git add .  git rebase --continue

如果你想放弃这次压缩的话,执行以下命令:

git rebase --abort

3.4 如果没有冲突,或者冲突已经解决,则会出现如下的编辑窗口:

# This is a combination of 4 commits.
#The first commit’s message is:
注释......
# The 2nd commit’s message is:
注释......
# The 3rd commit’s message is:
注释......
# Please enter the commit message for your changes. Lines starting # with ‘#’ will be ignored, and an empty message aborts the commit.

3.5 输入wq保存并推出, 再次输入git log查看 commit 历史信息,你会发现这两个 commit 已经合并了。

原文链接:https://segmentfault.com/a/1190000007748862

git合并多个commit相关推荐

  1. git合并多个commit成为一个commit

    git合并多个commit成为一个commit 在git使用中,可能会在合并代码的时候有大量的commit,如何能在合并分支的时候将许多commit转化为1个commit呢,可以使用以下命令: git ...

  2. Git合并最近的commit

    合并commit的做法一般用在pull request的时候,把开发同一功能时的所有琐碎的commit合并到一个(假装自己的代码是高质量代码(手动滑稽)).主要使用的命令是git rebase 或者g ...

  3. IDEA中Git合并冲突

    1.美图 2.背景 IDEA中Git合并冲突 先commit本地修改的文件到本地repository pull源码,因为存在代码冲突,所以接下来会自动弹出merge融合窗口,如下图:

  4. Git : 合并 commit 保持分支干净整洁

    本文的读者需要已经了解 基本的 Git 操作和开发流程. 在我们开发完分支后,一般分支上会有很多 commit -- 少不了诸如 "fix typo", "sth wro ...

  5. IDEA GIT 合并commit

    步骤 前提:当前分支在对应commit所在的分支下 打开IDEA的GIT侧边栏,左侧选择本地的分支或者远端的分支,中间将展示提交的commit,右侧将出现每一个commit对应的修改文件 选择要合并的 ...

  6. GIT合并特定commit

    Git合并特定commits 到另一个分支 标签: gitmerge合并特定commit单个commit 2014-12-25 14:13 21570人阅读 评论(4) 收藏 举报 分类: Git(1 ...

  7. git 几个commit点合并成一个commit点

    在用git做版本控制器的时候,经常会遇到以下情况: 1.在做1个功能的时候,你自己觉得代码没问题了,就本地commit,然后提交代码,在gitlab上发起和并请求,老大看完之后,觉得你还有修改的地方, ...

  8. Git合并和变基简介:它们是什么,以及如何使用它们

    by Vali Shah 通过瓦利沙阿 Git合并和Git变基简介:它们做什么以及何时使用它们 (An Introduction to Git Merge and Git Rebase: What T ...

  9. 简单介绍Git合并分支的流程步骤

    这篇文章主要介绍了详解Git合并分支的流程步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 正常合并分支dev到master流 ...

最新文章

  1. 数据中心柴油发电机系统的使用和维护
  2. Android系统自带样式(@android:style/)
  3. i5 11300h和R5 5600H 参数对比哪个好
  4. 创建数据库连接字符串的快截方法
  5. linux 目录大小是12288,为什么有些目录数的引用超过3,为什么很多目录的大小都是4096...
  6. 任给十进制整数,请从低位到高位……
  7. 设计模式 生成器_生成器设计模式的应用
  8. 京东php asp,jd jd demo 关于php的代码里面是 一些京东的接口 包含了 重要 WEB(ASP,PHP,...) 238万源代码下载- www.pudn.com...
  9. ubuntu18安装sublime
  10. 第十一节(单例模式初步、类的继承)
  11. 《Cisco安全防火墙服务模块(FWSM)解决方案》——2.7 软件架构
  12. 竞价广告系统-广告网络
  13. 投影查询(2020-3-13)
  14. linux中定义用户账户的文件为,Linux中用户和组中认证库和解析库的文件格式以及默认参数定义文件...
  15. H5调用摄像头扫码详解
  16. 如何使用计算机勾绘汇水面积,水文计算算例
  17. Linux快速入门教程
  18. 安卓ADB和Fastboot最新官方下载链接
  19. java 网站微信登录_网站微信授权登录-JAVA版
  20. 蓝桥杯 调和级数 Java

热门文章

  1. python点的作用-一分钟了解Python中“*”的作用
  2. 21天学通python电子版-小数据池,深浅拷贝,集合+菜中菜
  3. python与excel的差别-python数据分析相对于bi和excel的优势是什么?
  4. python是什么公司开发的软件-python适合开发桌面软件吗?
  5. python面向对象编程的优点-Python面向对象编程 一
  6. python常用知识点总结-Python常用知识点汇总
  7. python语言特点有哪些-python语言的有何特点?
  8. python是什么编程教程-编程零基础应当如何开始学习 Python?
  9. lidar激光雷达介绍,以及使用激光雷达数据通过深度学习做目标检测
  10. java actor_Akka笔记之Actor简介