zoukankan      html  css  js  c++  java
  • git使用笔记3:git pull&git merge git pull

    1、用途:git fetch&git merge   git pull这两条语句的作用是从远程仓库同步文件到本地;

    2、区别

    首先假设我们本地仓库的 master 分支上 commit ID =1 ,orign/mastter中的commit ID =1 ;这时候远程仓库有人更新了github ogirn库中master分支上的代码,新的代码版本号commit ID =2 ,那么在github上 orign/master的commitID=2,然后我们要更新代码。

    1. git fetch

    • 使用git fetch更新代码,本地的库中master的commitID不变,还是等于1。但是与git上面关联的那个orign/master的commit ID变成了2。这时候我们本地相当于存储了两个代码的版本号,我们还要通过merge去合并这两个不同的代码版本,如果这两个版本都修改了同一处的代码,这时候merge就会出现冲突,然后我们解决冲突之后就生成了一个新的代码版本。
    • 这时候本地的代码版本可能就变成了commit ID=3,即生成了一个新的代码版本。

     相当于fetch的时候本地的master没有变化,但是与远程仓关联的那个版本号被更新了,我们接下来就是在本地合并这两个版本号的代码。

    2. git pull

    • 是用git pull更新代码的话就比较简单暴力了,看下图。

    使用git pull的会将本地的代码更新至远程仓库里面最新的代码版本。

    总结:

    不要用git pull,用git fetch和git merge代替它。

    git pull的问题是它把过程的细节都隐藏了起来,以至于你不用去了解git中各种类型分支的区别和使用方法。当然,多数时候这是没问题的,但一旦代码有问题,你很难找到出错的地方。看起来git pull的用法会使你吃惊,简单看一下git的使用文档应该就能说服你。

    将下载(fetch)和合并(merge)放到一个命令里的另外一个弊端是,你的本地工作目录在未经确认的情况下就会被远程分支更新。当然,除非你关闭所有的安全选项,否则git pull在你本地工作目录还不至于造成不可挽回的损失,但很多时候我们宁愿做的慢一些,也不愿意返工重来 。

    3、实例

    (1) git pull

    git pull <远程主机名> <远程分支名>:<本地分支名>
    //取回远程主机某个分支的更新,再与本地的指定分支合并。

    (2) git fetch & git merge 

    git fetch origin master:tmp 
    //在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
    git diff tmp 
    //来比较本地代码与刚刚从远程下载下来的代码的区别
    git merge tmp
    //合并temp分支到本地的master分支
    git branch -d temp
    //如果不想保留temp分支 可以用这步删除

    如果直接使用git fetch,则步骤如下:

    1.创建并更新本 地远程分支。即创建并更新origin/xxx 分支,拉取代码到origin/xxx分支上。
    2.在FETCH_HEAD中设定当前分支-origin/当前分支对应,如直接到时候git merge就可以将origin/abc合并到abc分支上。

    git fetch origin
    只是手动指定了要fetch的remote。在不指定分支时通常默认为master

    git fetch origin dev
    指定远程remote和FETCH_HEAD,并且只拉取该分支的提交。

  • 相关阅读:
    set转成toarray()
    list和set的拉拉扯扯的关系
    【转载】VNC和远程桌面的区别
    笔记本最小安装centos7 连接WiFi的方法
    mysql 索引优化 性能调优 锁
    PageHelper 自动去掉排序参数问题
    抽奖算法 百万次抽奖 单线程环境下 约 3.5 秒
    gitlab 安装和使用
    sharding sphere 分表分库 读写分离
    mycat 安装 分表 分库 读写分离
  • 原文地址:https://www.cnblogs.com/zf-blog/p/12174643.html
Copyright © 2011-2022 走看看