zoukankan      html  css  js  c++  java
  • git rebase和git merge的区别

    前言:

       平时工作中发现一般同事在同步远程代码的时候都是用git pull,其实git pull包含有两个操作,一个是fetch远程的代码,一个是将本地当前的代码和远程代码进行merge,即git fetch + git merge.
    其实git pull还有一个参数可以加,即git pull -rebase,其最终效果和git pull一样,也会fetch到远程代码。
    即git pull默认使用的是merge模式,那么git pull -rebase指定使用rebase模式。
    那么git merge和git rebase的区别是什么呢?
     
    1、结果上没有区别
    简单来说,git merge和git rebase从最终效果来看没有任何区别,都是将不同分支的代码融合在一起。
     
    2、生成的代码树不同
    虽然从最终效果上来说相同,但是git merge和git rebase生成的代码树稍微有些不同。
     
    3. git merge会生成一个新的合并点,而git rebase不会。
    比如:当前存在两个分支,master和test分支
         D---E test
         /
    A---B---C---F master
    如果使用merge合并,将为分支合并自动识别出最佳的同源合并点:并新增合并点G
      D--------E
         /         
    A---B---C---F----G  test, master

    如果使用rebase合并,则合并结果为:
    A---B---D---E---C'---F'   test, master 
    即git rebase可以线性的看到每次提交,而git merge可以更加精确的看到每次提交。
    所以想要更好的提交树,使用rebase操作会更好一点。这样可以线性的看到每一次提交,并且没有增加提交节点。
     
    4. 遇到冲突时的处理
         merge 操作遇到冲突的时候,当前merge不能继续进行下去。手动修改冲突内容后,add 修改,commit 就可以继续往下操作,
    rebase 操作的话,会中断rebase,同时会提示去解决冲突。解决冲突(vi 或则其他工具)后, 将修改add后执行git rebase —continue 继续操作(会要求写入comment),或者git rebase —skip忽略冲突,之后push到远端。

     

  • 相关阅读:
    .net基础学java系列(一)视野
    技术栈
    Apollo(阿波罗)携程开源配置管理中心
    .NET 动态调用WCF
    RPC 工作原理
    ServiceStack 简单使用
    PRC 框架选择
    栈vs堆,最详细的对比
    使用SuperSocket打造逾10万长连接的Socket服务
    开源项目练习EF+jQueryUI前后端分离设计
  • 原文地址:https://www.cnblogs.com/daxiong225/p/13472037.html
Copyright © 2011-2022 走看看