89

Git Rebase 黄金法则问题 | Frank's Blog

 5 years ago
source link: https://hellofrank.github.io/2018/04/27/Git-Rebase-%E9%BB%84%E9%87%91%E6%B3%95%E5%88%99%E9%97%AE%E9%A2%98/?
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Git Rebase 黄金法则问题

2018-04-27

| Git

| 阅读次数: 364

1.8k

|

3 分钟

这篇文章主要说一下rebase的黄金法则问题,本篇博文是基于上一篇文章出现的,很多场景都是基于上一篇。建议大家先阅读上一篇。
git 整合来自不同分支的修改主要有两种方法:merge 操作和rebase操作,
merge初学者可能很熟悉。我们今天来主要说一下 rebase 操作,文章结尾会简单说一下 merge 操作的 –no-ff 参数问题。

rebase的简单定义:你可以把某一分支的所有修改都移至另外一个分支就像重新播放一样。

有点儿像金庸武侠小说里面的乾坤大挪移。

将设我们本地库的代码,如下所示

1
2
3
     A---B---C  remotes/origin/master
/
D---E---F---G master

如果此时我们执行 git pull 操作,就会变成下面的样子,因为 pull 默认执行的是 merge 操作,多出来H这次没必要的提交。如下所示

1
2
3
     A---B---C  remotes/origin/master
/ \
D---E---F---G---H master

如果我们执行 git pull –rebase 操作,将会变成下面的样子,这里我们用rebase代替了默认的merge操作

1
2
3
4
5
            remotes/origin
|
D---E---A---B---C---F---G
|
master

rebase 作用就是变成线性了,这在多人协作的情况变得非常关键。因为多人合作是不允许随意制造分叉的。大家可以参考我这篇文章

这就引出了这篇博文要主要阐述的问题,rebase golden rule 问题。

Rebase golden rule
“No one shall rebase a shared branch” — Everyone about rebase

简单来说就是不要在你的公共分支上做任何rebase操作。

再举一个🌰。

图一是我们做rebase操作前的样子

pic-1

图二是我们正确rebase的结果,即在feature分支执行rebase develop命令

pic-2

图三是我们错误rebase的结果,即违反黄金法则的结果,我们在develop分支上执行了rebase feature操作

pic-3

当我们在图三这种情况下对develop分支进行提交的话,会发现和远程分支冲突,然后我们手动或自动解决冲突,继续提交上去之后发现,我们修改的功能代码已经提交上去了,但是当我们看我们提交历史的记录的时候会发现有一部分重复的提交log。
这就是问题所在,你的项目组长是绝对不允许在他的项目里出现这种情况,因为会影响后续的代码追查,code review等问题。

说完了这个问题,这篇博文的主要任务基本完成了,最后在简单说一下 merge 的 –no-ff 参数,这也是我们在分支合并的时候经常遇到的问题。
–no-ff 的意思就是关闭 merge 的 fast-forwarded,merge 操作默认执行的是 fast-forwarded。
fast-forwarded 的意思就是在合并分支的时候,如果不涉及三方合并,git 只会简单的移动指针。

再再举一个🌰

1
2
3
4
5
6
7
        dev
|
A---B---C
\
D---E
|
feature

此时我们执行 merge –no-ff 操作,将会得到如下图

1
2
3
4
5
                dev
|
A---B---C--------F
\ /
D---E

执行 merge 之后得到的结果如下

1
2
3
               dev
|
A---B---C---D---E

如上git 将指针从C移到了E。

简单来说就是 –no-ff 的作用就是保持分支的非线性。方便我们看到分支的变化。


Recommend

  • 48

    做产品,绕不开「需求」二字。很多产品从0到1需要团队付出很多努力,但如果在把握用户需求的时候出了错误,再好的团队、再牛的执行力、再牛逼的技术也阻止不了项目的失败,所以,分辨用户需求就成了产品的关键。 需求有「真需求」,也有「伪需求」,「真需求」可以...

  • 23
    • lusongsong.com 4 years ago
    • Cache

    创业黄金法则

  • 12
    • www.woshipm.com 3 years ago
    • Cache

    有一种思维法则叫黄金圈思维

    编辑导语:黄金圈思维是由营销专家西蒙·斯涅克提出的,核心是对任何事情,从内而外进行提问,而不是剥洋葱式的从外而内。一般的大众思维,都是从做什么开始,然后如何做,最后才问为什么,从外向内思考。黄金圈法则的核心,就是在思考或沟...

  • 7

    支持多种游戏输入设备的5条黄金法则(译)高鸣 蜡烛人挚友数字时代的民间手艺人有些...

  • 11

    前言 西蒙·斯涅克在他的《从“为什么”开始》一书中提出了“黄金圈法则”的概念。他发现,人们一般向别人表达或者激励时,常规路径是:先现象,而后措施,最后是结果,这种路径收效甚微。而真正能动人心的路径应该...

  • 3

    黄金圈法则:WHY、HOW、WHAT,让运营结果与目的更一致 15天0基础极速入门数据分析,掌握一套数据分析流程和方法,学完就能写一份数据报告!了解一下>>

  • 2

    两个黄金法则、十个增长思维打造可复制的营销力

  • 9
    • www.techug.com 3 years ago
    • Cache

    软件开发的 22 条黄金法则

    编程本质上是一门手艺活,既然是手艺,里面就会有很多个人技巧和经验。 “破窗理论”,DRY(Don’t repeat yourself),曳光弹,正交性,这些词的意思是什么你还记得么? 《程序员修炼之道》这本书在我看来就是一本师傅写...

  • 8
    • www.iyunying.org 2 years ago
    • Cache

    私域流量管理三大有效黄金法则

    随着互联网发展,流量的获取成本与难度在不断提高,成本低且效应高的私域流量成为最新风口也是意料之中。从去年开始,无论是大型企业还是中小型商家,越来越多的企业拿着真金白银投入到...

  • 2
    • www.pintu360.com 2 years ago
    • Cache

    产业互联网的「黄金法则」

    产业互联网的「黄金法则」 ...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK