【git】神奇的rebase

入职后第一次提交review,由于一个功能中途有修改提交了三次commit,然后我就发起了三次review。。mentor说你rebase一下,合并成一次提交记录。表面淡定内心懵逼的我赶紧Google了一下,补充一下知识点。

合并多次提交记录

场景大家都知道了,它的目的一个是有利于code review;还有就是让commit记录更加美观,万一哪天需要回滚代码,也不至于太抓瞎。

接下来就看看如何操作吧~

我们来合并最近三次的提交记录。

  1. 查看提交历史,git log

首先确定要合并哪几个commit,先查看历史提交记录,例如最近4条

git log --oneline -4

17d4132e34 xxx
36fb1c5194 xxx
6eef030837 xxx
222cffedee xxx
  1. git rebase

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

  • 指明要合并的版本之前的版本
// 要合并前三条,就指定第三条之前的版本也就是第四条
git rebase -i 222cffedee
  • 从HEAD版本开始往前数3个版本
git rebase -i HEAD~3
  1. 选取要合并的提交

执行了上面的命令后,会自动进入 vi 编辑模式,头几行如下

pick 17d4132e34   '注释**********'
pick 36fb1c5194   '注释*********'
pick 6eef030837   '注释**********'

将pick改为squash或s,之后保存并关闭文本编辑窗口即可。

pick 17d4132e34   '注释**********'
// 将这一条合并到17d4132e34上面,最终合并为一条
s 36fb1c5194   '注释*********'
// 将这一条合并到36fb1c5194上面
s 6eef030837   '注释**********'
  1. 查看结果

再用git log 查看一下就会发现三次合并成了一次


rebase-commit.png

可以在Learn Git Branching这个网站中照图片中的命令操作一下,更直观哦~

分支合并

某天,我和mentor各自基于dev分支拉了分支进行开发,大概从上午到了下午,mentor跟我说,你rebase一下dev分支我提交了代码你得看点东西。咋个回事?又rebase,跟上次情况不一样啊。再去Google吧。

了解了之后发现这个跟merge的功能差不多呀,但是merge会产生一些merge的记录,污染commit记录。想保持干净的commit记录,git rebase就上场啦。

还是来形象的看一下rebase的功能:


rebase-branch.png

上图中执行了git rebase master之后,dev分支是基于最新的master分支。

rebase做了什么操作呢?

  • git 会把 dev 分支里面的每个 commit 取消掉;
  • 把上面的操作临时保存成 patch 文件,存在 .git/rebase 目录下;
  • 把 dev 分支更新到最新的 master 分支;
  • 把上面保存的 patch 文件应用到 dev 分支上;

在 rebase 的过程中,也许会出现冲突。在这种情况,git 会停止 rebase 并会让你去解决冲突。在解决完冲突后,再执行以下命令

// 更新内容
git add .

// git 会继续应用余下的 patch 补丁文件
git rebase --continue

小伙伴们,你get了吗?

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容