美文网首页
Git 操作-- git pull

Git 操作-- git pull

作者: 雨天多久就 | 来源:发表于2019-08-20 22:25 被阅读0次

git pull 的理解

项目中是多人开发,之前每次拉取代码都是使用git pull,然后再去推送代码。
但是因为一起合作的人太多了,看提交记录看的很蒙蔽,因为大家都是一条线一条线的在合并。
后来团队要求拉取代码的是加上--rebase,这样可以保证历史记录的干净。

于是去研究一下这个东西

git pull作用是 将远程仓库中的更改合并到当前分支中

默认模式下 相当于 git fetch + git merge FETCH_HEAD 命令

更准确的说是,git pull 相当于: 先执行git fetch + 指定参数,然后执行git merge 命令将检索到的分支合并到当前分支。

下面是git pull的过程

  • git fetch origin master 先拉取,让本地的origin/master先更新到最新

                A---B---C master on origin
              /
            D---E---F---G master
    
  • git merge origin/master

                 A---B-----C     origin/master
               /             \
             D---E---F---G--- H    master
    

如果加上了 --rebase

  • 第一步没有变化

                A---B---C master on origin
              /
            D---E---F---G master
    
  • 第二步由git merge换成了git rebase

                 A---B---C master on origin
               /
            D---E---F---G master
                    |
                    |变化
                   \/
                A---B---C master on origin
              /
            D----A----B----C---E'---F'---G' master
    

简单说一下git mergegit rebase的区别:
首先明确一点:这两个都是合并分支的方式,他们最终合并的结果并没什么区别。

git merge 是将两个分支的末端节点和他们最近的共同祖先节点,这三个节点的文件快照做一个三方合并,生成一个新的commit(fast-forward就不说了😂)

git rebase 又称变基,它的操作相对复杂点。

举例子来说,比如分支B要合并到分支A上
- 先找到两个分支最近的共同祖先节点,然后将B分支上从这个节点之后的所有提交都提取出来放到本地文件夹下作为补丁文件存放。
- 将分支B拉取到分支A的最新节点
- 依次将存放的补丁文件一个一个应用到分支B上

相关文章

网友评论

      本文标题:Git 操作-- git pull

      本文链接:https://www.haomeiwen.com/subject/vtymsctx.html