分享

git pull

 e比 2022-05-25 发布于广东

      在push代码时,会提示使用git pull命令,也就是拉取远端代码,更新我们的仓库,那么为什么又要加个 --rebase命令呢?下面来说说这个问题,先从这两命令开始。

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

      二者的区别是,在fetch之后的操作不同,merge与rebase的不同。

      假设当前master的提交如下:

      如果是你或者你的同事在cid2点,开发进度是cid20(或者突然撇出一个分支,假设是tmp分支),此时要把cid20提交到master

       在master执行git merge tmp,然后会得到如下结果:

        新增了一次提交记录cid6, 似乎也没有什么问题。如果你装了小乌龟,查看提交日志,可能就是下面的样子:

       那么来看看git rebase,  在master执行git rebase tmp,操作之后的分支如下:

       二者对比可知,rebase没有产生新的节点,使用rebase的git演进路线(提交树)是一直向前的,这样在版本回退时也很容易,用merge的git路线是跳跃的,如果版本回退你也找不到自己想要的版本,如果在merge时出现了冲突那就麻烦了,当前merge就不能继续进行下去,需要手动修改冲突内容后,add,commit, push. 而rebase 操作的话,会中断rebase,同时会提示去解决冲突。解决冲突后, 再执行 git rebase –continue 继续操作,再push.

       想要更好的提交树,建议使用rebase操作会更好一点,这样可以线性的看到每一次提交,并且没有增加提交节点。不过也有些项目,不建议使用rebase, 这就得看公司与项目的规定。

       那么到此git pull --rebase与git pul的区别也讲清楚了。 

      

      

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多