Git之不明觉厉7-大挪移rebase

我们来看看rebase这个命令,有可能这是我们使用最多的命令哦。rebase和merge命令都可以合并branch,一般来说rebase比merge好,我们来看看merge产生的commits。这次我们用sourcetree来看看log


source tree

可以发现merge产生的commits是合并的,这个合并的commit其实没有什么用处。我们看看rebase是怎么工作的吧。

理解rebase

  1. rebase字面意思当前的commit换一个基地


    rebase的情况

    当上图绿色branch调用rebase的时候,表示绿色的两个commit暂时被移除,因为他要换一个基地吗,注意紫色的叉叉。

  2. 那么新的基地在哪里呢?看看下图


    新的基地
  3. merge是什么情况呢?
    可以看到merge产生了一个没用的merge commit


    merge的情况

    可以看到,rebase的英文意思已经说明了意思,可见英文好是很重要的。

rebase可以合并commit

另一个很好用的功能是用来合并commit,我们新建一个branch,然后增加三个commit如下图


相同意义的commit

看看怎么合并

git rebase -i HEAD~3

这个命令会弹出一个编辑器,让我们编辑commit


rebase -i

命令成功以后,三个commit合并成一个了。


Paste_Image.png

rebase可以用来修改commit信息

我们知道git commit --amend -m "i change you" 可以对最近的一条commit做修改,那么以前的commit怎么办呢,我们可以用下面这个命令改动最近3条commit的信息。

git rebase -i HEAD~3

按照下图提示,使用reword命令就可以了


Paste_Image.png

保存以后还会弹出一个框,让我们修改message,保存就可以了。

rebase 可以用来拆分commit

有的时候,我们经常很懒一下次提交很多内容,然后有后悔,毕竟提交的信息别人能看到,不讲究不行啊。如果我们想拆分一个大的commit到小的几个commit,怎么做呢。

先初始化一下文件吧
echo "split file 1" > split.txt
echo "split file 2" > split2.txt
git add -A
git ci -am "one commit"

现在我们要把最近的一个commit拆成两个,分别提交。

git rebase -i HEAD^
rebase -i

拆分成两个commit

最后我们修改完了,再调用

git rebase --continue

什么时候不要用rebase

rebase虽然好,但是不要滥用啊,一个黄金法则就是

never use it on public branches. 不要在公共的branch上用

  1. 改变master branch的历史。


    Paste_Image.png

    这样有没有发现自己的master和别人的都不一样(这里的不一样是指同名的commit hash值确不一样),下次你push的时候就需要merge了,多余的commit也会显示出你是一个菜鸟,因为会有同名的commit被merge到一起。嘿嘿。
    提示:完成这个例子需要在master branch上调用git rebase。

  2. git push --force
    如何遇到上面的那个情况,可以用这个命令把自己的master强行推到远程,这样你省事了,其他队友都傻了。不过如果你的branch是自己在用,并且推送到远程保存了,然后自己又清理了一下commit这样用还是可以的。总之确保你rebase的branch没人在用。

rebase的参数顺序问题

说了这么多,我们可能有点疑惑,到底rebase which branch onto which branch?我们有必要搞清楚参数含义

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

推荐阅读更多精彩内容

  • 这个小长假陪孩子去另外一个城市游玩,顺道与多年未见的高中同学见面叙旧。同学一家很是热情,我们大人一边闲聊,两家的孩...
    苏予阅读 421评论 0 0
  • 简单来说#{} 解析的是占位符?可以防止SQL注入, 比如打印出来的语句 select *from table w...
    王纪山阅读 8,854评论 0 1
  • 我们村里有个哑女,哑女遇人羞涩的看一眼,害羞低头笑,她的笑很干净也很温暖。 这次回家,没见到哑女,妈妈讲了缘由。 ...
    乐微扬阅读 2,060评论 106 64