场景:

(1) 在自己的开发分支上开发一个功能提交多次,有多个commit,想将多次提交的commit合并成一个commit,方便代码管理。 例如将最近四次提交的commit合并成一个

(2) 将dev分支或者很多零散的分支merge到一个公共release分支里。


方式一:

使用 git merge --squash

举例:

开发分支: develop_test
上线分支: release_brand

在线上分支release_brand上面合并develop_test,使用命令 git merge --squash develop_test


方式二:

使用 git rebase

1、查看提交历史,git log

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

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

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

2、git rebase

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

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

git rebase -i HEAD~3

2.指名要合并的版本之前的版本号

git rebase -i 3a4226b

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

3、选取要合并的提交

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

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

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

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

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

git add .  git rebase --continue

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

git rebase --abort

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.

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

合并多个commit记录相关推荐

  1. git——合并分支commit记录 squash提交

    在公司和别人协同合作时,作为开发需要向架构或者负责人提交mr以合并代码,为了提高review效率,有些负责人会要求一个mr仅保留一条commit记录方便代码比对review的观看,但是开发常常是很多需 ...

  2. 使用Git rebase合并多条提交记录commit。以及使用 git commit amend本地提交直接合并到远程已有commit的用法

    需求场景一 : 对某个小的功能点进行多次反复的修改提交,且已经提交到远程,导致commit记录过多,太过于杂乱无章,想要精简合并一些提交记录. 场景还原: 比如下图4个git commit记录,log ...

  3. git commit —amend_Git之修改commit记录

    在很多影视作品里,就算主人公乘上了时光鸡,还是无法修改历史(或者说修改后造成十分严重的后果):而现在,在 Git 的强力驱动下,修改历史变得简单又相对安全. 本文叨叨修改 commit 历史的问题 应 ...

  4. git合并多个commit

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

  5. git 如何清理操作日志_git如何清空所有的commit记录

    为什么要清空 git 中的 commit 记录? 大多数开发者喜欢在 github 创建自己的 Repository,而后进行持续开发,然后就是不断的 add.commit.push 等,中间难免会把 ...

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

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

  7. Git合并最近的commit

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

  8. 把多个不连续的commit合并成一个commit

    场景 1.多个commit是同一个功能(需求). 2.为了log信息更简洁. 3.代码管理更方便. 步骤 1.查看commit历史 2. 使用git rebase -i <需要合并的commit ...

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

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

最新文章

  1. 2019.01.07|区块链技术头条
  2. python交互式和文件式区别_Python中的交互式数据可视化与Bokeh(系列五)
  3. 学计算机广东2B大学,2021年广东省较好的2B大学排名,广东2B大学排名出炉
  4. 授人以鱼不如授人以渔
  5. hnu暑期实训之数塔 巧妙地设定一个偏移量
  6. java递归实现汉字组词穷举_Javascript迭代、递推、穷举、递归常用算法实例讲解...
  7. java 银行帐号_Java 根据银行卡号获取银行名称以及图标
  8. 软件测试计算机硬件 64,《计算机系统与系统软件》用AIDA64测试上机报告
  9. Android 仿美团GridView分页滑动(类似直播礼物列表效果)
  10. 前端合并单元格(行合并、列合并)
  11. 计算机室教师使用制度,[最新]教师计算机室管理制度
  12. 从又苦又累的销售工作到python程序员,我哭了
  13. atm机存款场景图_atm存钱(自动存款机存钱演示图)
  14. ggplot 直方图(histogram)
  15. Dijkstra算法 详细讲解
  16. 虚拟机的Nginx安装配置
  17. git学习之:如何将远程代码强制拉取同步(覆盖)到本地文件夹
  18. Visio画图-visio 2007中的布局与排列间距在哪里
  19. zend studio php mvc,Zend Studio使用教程:使用Zend Studio和Zend Server进行根本原因分析 (一)...
  20. 数据可视化项目---订单分类占比图

热门文章

  1. 机器学习算法Python实现:tfidf 特征词提取及文本相似度分类
  2. 052、overlay如何实现跨主机通信?(2019-03-19 周二)
  3. 浅谈前端实现页面加载进度条以及 nprogress.js 的实现
  4. MAC使用终端DISKUTIL命令给U盘分区(解决window优盘只有200M)
  5. 一、从零创建VUE项目
  6. 程序员面试什么最重要?
  7. virtual machine(vmware)知识
  8. Linux下怎么创建和进入带有空格的文件夹
  9. 华章揭秘系列精品图书(《Android应用开发揭秘》、《GWT揭秘》、《Spring技术内幕》)...
  10. 杜新会一个精彩占例之反推