文档章节

使用git rebase合并多次commit

_Change_
 _Change_
发布于 2016/11/29 19:54
字数 710
阅读 353
收藏 1

1.首先使用git log查看一下提交历史: 这样在git中看到的是4次提交,有点冗余,需要做的是将4次commit合并为一次

[demo@ubuntu1204:zh_cn(bugfix/ycs-MOS-1503-notify-template-table-center)]$ git log  
commit 5e187c7dbe84af67ad19823a54f3cc3e3f6d6940  
Author: yangcs2009 <yangchangsheng@meituan.com>  
Date:   Thu Jul 30 20:48:15 2015 +0800  
  
    add center style indent  
  
commit 6d577eb344080d7e3593733ac8dcb622de22b492  
Author: yangcs2009 <yangchangsheng@meituan.com>  
Rebasing (4/4)  
Date:   Thu Jul 30 20:30:20 2015 +0800  
  
    add center style  
  
commit f9b9508a3ab634f8c8a2d28ab844a3a87d8e30ab  
Author: yangcs2009 <yangchangsheng@meituan.com>  
Date:   Thu Jul 30 20:16:35 2015 +0800  
  
    add center style  
  
commit 111ab9cc26101f7c6972de3dccfef2836a95efe0  
Author: yangcs2009 <yangchangsheng@meituan.com>  
Date:   Thu Jul 30 18:57:46 2015 +0800  
  
    update templates  
  1. git 压缩 git rebase -i HEAD~4

该命令执行后,会弹出一个编辑窗口,4次提交的commit倒序排列,最上面的是最早的提交,最下面的是最近一次提交。

pick 5e187c7dbe8    add center style indent  
pick 6d577eb3440    add center style  
pick f9b9508a3ab    add center style  
pick 111ab9cc261    update templates  
# Rebase 150a643..2fad1ae onto 150a643  
#  
# Commands:  
#  p, pick = use commit  
#  r, reword = use commit, but edit the commit message  
#  e, edit = use commit, but stop for amending  
#  s, squash = use commit, but meld into previous commit  
#  f, fixup = like "squash", but discard this commit's log message  
#  x, exec = run command (the rest of the line) using shell  
#  
# These lines can be re-ordered; they are executed from top to bottom.  
#  
# If you remove a line here THAT COMMIT WILL BE LOST.  
#  
# However, if you remove everything, the rebase will be aborted.  
#  
# Note that empty commits are commented out  

修改第2-4行的第一个单词pick为squash,当然看一下里面的注释就理解含义了。 然后保存退出,Git会压缩提交历史,如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了

pick 5e187c7dbe8    add center style indent  
squash 6d577eb3440  add center style  
squash f9b9508a3ab  add center style  
squash 111ab9cc261  update templates  
# Rebase 150a643..2fad1ae onto 150a643  
#  
# Commands:  
#  p, pick = use commit  
#  r, reword = use commit, but edit the commit message  
#  e, edit = use commit, but stop for amending  
#  s, squash = use commit, but meld into previous commit  
#  f, fixup = like "squash", but discard this commit's log message  
#  x, exec = run command (the rest of the line) using shell  
#  
# These lines can be re-ordered; they are executed from top to bottom.  
#  
# If you remove a line here THAT COMMIT WILL BE LOST.  
#  
# However, if you remove everything, the rebase will be aborted.  
#  
# Note that empty commits are commented out  

修改以后要记得敲下面的命令(如果没有冲突会自动略过这一步进入下一步):讲之前的commit message 删除只保留一个即可

git add .  
git rebase --continue  

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

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

保存之后push到仓库

git push --force

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

git rebase --abort  

© 著作权归作者所有

_Change_
粉丝 20
博文 166
码字总数 92299
作品 0
普陀
QA/测试工程师
私信 提问
[Git] Git整理(四) git rebase 的使用

概述 在之前总结分支相关内容时说道,合并两个分支的提交可以使用git merge,然而除了这种方式之外,还有一种方式就是使用git rebase,这两种方式的最终结果都相同,但是合并历史却不同;git...

天王盖地虎626
03/20
418
0
git rebase简介(基本篇)

一、基本 git rebase用于把一个分支的修改合并到当前分支。 假设你现在基于远程分支"origin",创建一个叫"mywork"的分支。 $ git checkout -b mywork origin 假设远程分支"origin"已经有了2......

china008
2015/11/09
4.5K
0
Java编程——JIT概念图解和JIT常用操作总结

GIT 首先我们来初步了解git的大概样子,图解 每一个项目,我们都把他变成一个git仓库。 一个git仓库包含无数分支,默认分支为master 每个分支都包含无数个版本库 每个版本库都包含无数个文件...

远方的梦Java
2018/07/25
0
0
Git merge --no-ff与--squash

指的是强行关闭fast-forward方式。 fast-forward方式就是当条件允许的时候,git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息。...

阿刚ABC
01/14
49
0
Git – Fast Forward 和 no fast foward

Git 很是强大,在体验过rebase的华丽之后,再次发现之前在TFS上遇到的问题一下都有解了。但也印证了Git深入并非易事。这篇就谈下一个容易迷糊的概念:Fast forward。 Fast-Forward 当前分支合...

yuzn
2012/10/10
11.2K
3

没有更多内容

加载失败,请刷新页面

加载更多

UAVStack功能上新:新增JVM监控分析工具

UAVStack推出的JVM监控分析工具提供基于页面的展现方式,以图形化的方式展示采集到的监控数据;同时提供JVM基本参数获取、内存dump、线程分析、内存分配采样和热点方法分析等功能。 引言 作为...

宜信技术学院
11分钟前
3
0
MySQL的5种时间类型的比较

日期时间类型 占用空间 日期格式 最小值 最大值 零值表示 DATETIME 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 9999-12-31 23:59:59 0000-00-00 00:00:00 TIMESTAMP 4 bytes YYYY-MM......

物种起源-达尔文
18分钟前
4
0
云服务OpenAPI的7大挑战,架构师如何应对?

阿里妹导读:API 是模块或者子系统之间交互的接口定义。好的系统架构离不开好的 API 设计,而一个设计不够完善的 API 则注定会导致系统的后续发展和维护非常困难。比较好的API设计样板可以参...

阿里云官方博客
22分钟前
1
0
Rancher + VMware PKS实现全球数百站点的边缘K8S集群管理

Sovereign Systems是一家成立于2007年的技术咨询公司,帮助客户将传统数据中心技术和应用程序转换为更高效的、基于云的技术平台,以更好地应对业务挑战。曾连续3年提名CRN,并且在2012年到2...

RancherLabs
26分钟前
4
0
6、根据坐标,判断该坐标是否在地图区域范围内

最近在写配送区域相关的代码,具体需求如下: 根据腾讯地图划分配送区域,总站下边设多个配送分站,然后将订单中的收货地址将其分配给不同的配送分站。 1、地图区域划分(腾讯地图) 1.1、H...

有一个小阿飞
28分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部