首页 > 科技 >

git merge和git rebase的区别,切记:永远用rebase

2019-07-28 06:54:29 暂无 阅读:1033 评论:0

git merge和git rebase的区别, 切记:永远用rebase

这一期来谈一下git merge和git rebase的区别。

git merge和git rebase的区别,切记:永远用rebase

Git无疑如今已经成为最风行的代码治理对象之一。个中有两个号令,对好多法式员造成了好多的疑心,一个是merge,一个是rebase。

这些疑心首要纠结于究竟应该用merge照样用rebase。

在持续深入商量之前,我先抛出我的概念。若是你想拥有一套不乱的,坚固的代码, 永远要使用rebase。

不为其余,就为了rebase能够给你供应一套清楚的代码汗青。

相反的, merge会给你一套杂乱无章的代码汗青。当你看到如许的代码汗青的时候,我相信你绝对没有表情去研究每一个汗青对应的代码。

好,接下来我们就具体剖析一下这两个号令的感化。假设我们的repo有这么个主branch: master。

每个法式员在建立本身的代码之前,要首先建立本身的小我分支,然子女码点窜起头。

假如你有6个法式员一路工作, 你就会有6个法式员的分支, 若是你使用merge, 你的代码汗青树就会有六个branch跟这个主的branch交错在一路。

谁人画风我相信对你必然很熟悉。想着谁人画风感受到一切都好无助, 有个词儿对照合适,叫做..。

这就是merge号令下生成的代码分支汗青。

那么rebase又能做到什么水平呢?Rebase永远不会导致多个汗青分支进行交错。它永远都是一条线。贞洁而又爽性。轻轻爽爽的, 从不滞滞泥泥。

那为什么会如许呢?

先说一下merge。Merge号令会保留所有commit的汗青时间。每小我对代码的提交是林林总总的。尽管这些时间对于法式自己并没有任何意义。然则merge的号令初志就是为了保留这些时间不被点窜。如许也就形成了以merge时间为基准的网状汗青构造。每个分支上都邑持续保留各自的代码记录, 主分支上只保留merge的汗青记录。子分支随时都有或者被删除。子分子删除今后,你可以看到的记录也就是,merge某branch到某branch上了。这个汗青记录描述根基上是没有意义的。

还有一个对照有意思的是你不克,也不该该去点窜这个汗青记录描述。那是因为这个merge记录里面,不光仅包含你本身的代码,也包含别人的代码。到这里你能想象有多乱吧?

再来说一下rebase, 这个号令会始终把你最新的点窜放到最前头。好比你对主branch进行rebase今后, 你的所有点窜就会在主branch当前所有的点窜之前。你会更有决心包管你的代码运行通顺无阻。经由你本身的测试今后, 你就能够宁神的把代码归并到主的branch里面了。

这里值得一提的是,rebase平日是发生在本身的小我branch上的。它的根蒂就是现有的主branch。如许做的优点就是包管每小我的代码都能够运行在当前最新的主branch的代码上。

这里再提一个对照有意思的现象。在我工作的这么多公司之中,只有不多的几家在使用rebase, 有相当数量的公司还在使用merge。经由视察我发现, 凡是代码治理杂沓的项目, 或许整个项目组的做决意者不太清楚代码整洁的主要性, 或许脑子有问题的, 他们都在使用merge。哈哈,我恶作剧呢。

不外, 我照样建议人人去亲自体验一下rebase的优点吧。

相关文章