git补充(fetch和rebase)

有一个远程仓库origin:
    在这里插入图片描述

本地在此基础上又进行了两次提交:
    在这里插入图片描述

这时候其他人进行了一次远程push:
    在这里插入图片描述

因为git是分布式的,原则上可以不用连服务器,所以此时本地并不知道远程分支已经变更(本地的origin/master已经过时):
    在这里插入图片描述

git fetch命令会将远程最新的版本拉取到本地,但是并不会影响本地的分支线:
git fetch <远程主机名> <远程分支>
    在这里插入图片描述

 

git meger会将本地和远程的最新提交混合起来,并生成新的最新提交(混合并解决冲突后的提交):
    在这里插入图片描述

git pull命令等于git fetch + git meger命令。

 

我们再看下上面git fetch命令后的本地状态:
    在这里插入图片描述

这时候我们并不想混合提交,而是想在C2的基础上直接提交L2和L3,这时候在提交历史线上不会有分支线。这个可以用git rebase命令实现:
    在这里插入图片描述

 

 

日常开发步骤如下:

  1. git fetch
  2. git rebase
  3. 解决冲突
  4. git add 冲突文件
  5. git rebase –continue
  6. git push

其中,3、4、5点,如果没遇到冲突就不用进行,直接push上去。

当遇到冲突时,git会提示patch failed,并要我们解决问题了再执行git rebase --continue

    git rebase patch failed

 

 

 

 

posted @ 2019-11-12 15:59  helloworldmybokeyuan  阅读(3074)  评论(0编辑  收藏  举报