zoukankan      html  css  js  c++  java
  • git pull、git fetch、git merge、git rebase的区别

    一、git pull与git fetch区别

    1、两者的区别
          两者都是更新远程仓库代码到本地。

      git fetch相当于是从远程获取最新版本到本地,不会自动merge。
      只是将远程仓库最新commitid记录更新到本地remote中对应的远程分支,而本地head不更新,仍然保持本地的commitid。
    

      git pull相当于是从远程获取最新版本代码并自动merge。
      只是将远程仓库最新commitid记录更新到本地remote中,同时本地head也更新到远程拉取下来的commitid记录。 
    

    2、两者的使用
          更新代码一般人都推荐git fetch,之后再自行手动合并,但是麻烦,协作开发,因为代码更新是经常性的

          git pull自动合并隐藏过程细节,方便快捷,但是有冲突就麻烦了,不容易对比差异化代码。幸运的是,日常开发中我们解决冲突一般借助于IDE提供的插件,可以很好地对比版本差异,快速解决冲突,所以个人更喜欢用git pull。

    二、git merge与git rebase的区别

    1、两者的区别
          两者都是将公共分支(master)合并到当前分支(feature)。

      git merge 的合并分支会让两个分支的每一次提交都按照提交时间(并不是push时间)排序,并且会将公共分支(master)和
      当前分支(feature)的最新一次commit点合并在一起,形成一个新的commit,最终的分支树呈现非整条线性直线的形式。
    

      git rebase操作实际上是将当前分支(feature)的所有commit点取消,保存成一个一个的临时patch(保存在".git/rebase"目录中),
      然后把当前分支(feature)更新到最新的原分支(master),最后把这些保存的临时patch文件,应用到当前分支(feature)上,
      并把这些patch重新生成一个个对应新的commit hash值,不会形成新的commit点,可以保持整个分支树的完美线性。
    


          下面的更直观:

    2、两者的使用
          git merge适合公共分支,将其他分支合并到公共分支,merge操作两个分支最新的提交点会形成新的一个提交点,使后合并进来的commit记录仍然保持在后边。

          git rebase适合个人分支(只自己一个人提交)。日常开发过程中,个人分支代码需要和公共分支代码保持一致最新,定期合并公共分支代码到个人分支。个人分支一般是处于开发阶段,只有个人提交,执行rebase操作后,从公共分支上合并别人新的commit在我们的commit之前。

      公共分支:master、develop、和其他人共同使用的feature,统称为公共分支。
      个人分支:只有自己一个人开发提交代码,不存在第二个人提交,统称为个人分支
    

    三、git pull与git pull --rebase区别

      git pull = git fetch + git merge
      git pull --rebase = git fetch + git rebase
    

    转自:[1]git pull与git fetch及git merge与git rebase的区别
              [2]git在工作中正确的使用方式----git rebase篇

  • 相关阅读:
    Java 8 Lambda 表达式
    OSGi 系列(十二)之 Http Service
    OSGi 系列(十三)之 Configuration Admin Service
    OSGi 系列(十四)之 Event Admin Service
    OSGi 系列(十六)之 JDBC Service
    OSGi 系列(十)之 Blueprint
    OSGi 系列(七)之服务的监听、跟踪、声明等
    OSGi 系列(六)之服务的使用
    OSGi 系列(三)之 bundle 事件监听
    OSGi 系列(三)之 bundle 详解
  • 原文地址:https://www.cnblogs.com/shujk/p/14995449.html
Copyright © 2011-2022 走看看