• 【git | 10】git fetch系列


    git fetch

    一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令;

    1. 将某个远程主机的更新全部取回本地, git fetch 命令通常查看其他人的进程,因为取回的代码对你本地的分支开发代码没有应影响。

    git fetch <远程主机名>

    2. 取回特定分支的更新, 使用命令:

    $ git fetch <远程主机名> <分支名>

     例如,取回origin主机的master分支,如下:

    $ git fetch origin master

    注意:取回的更新,在本地主机上要用"远程主机名/分支名"的形式读取。比如origin主机的master,就要用origin/master读取;

    3. 代码合并:

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

    图解剖析

    Git 的 clone 命令会为你自动将远程主机命名为 origin,拉取它的所有数据,创建一个指向它的 master 分支的指针,并且在本地将其命名为 origin/master。同时Git 也会给你一个与 origin 的master 分支在指向同一个地方的本地 master 分支,这样你就有工作的基础。

    本地有提交,远程也有别人的推送

    1. 远程库有人推送,提交了C0和C1:

     2. 本地提交了D0和D1:

    只要你不与 origin 服务器连接,你的 origin/master 指针就不会移动。

     3. 同步

    如果要同步远程库到你的工作,运行命令:

    $ git fetch origin

    注意:这个命令查找 “origin” 是哪一个服务器,从中抓取本地没有的数据,并且更新本地数据库,移动 origin/master 指针指向新的、更新后的位置。

     要特别注意的一点是 fetch 抓取到新的远程跟踪分支时,本地的工作区(workspace)不会自动生成一份可编辑的副本,抓取结果是直接送到版本库(Repository)中。

    如下图:

     

    打个比方,在远程库 origin 新建了一个分支 dev,git fetch 后本地不会生成一个新的分支 dev(可用 git branch 查看),只有一个不可以修改的 origin/dev 指针。

    在 origin/master 后继续工作

    如果想要在 origin/master 分支上工作,可以新建分支 test 并将其建立在远程跟踪分支之上:

    $ git checkout -b test origin/master

    这会给你新建一个用于工作的本地分支 test,并且起点位于 origin/master。

    合并

    如果想把拉取的结果合并到本地分支,需要手动合并。使用如下命令:

    $ git chekout master
    $ git merge origin/master

    然而,看到上面的合并结果会想到命令 git pull 。在大多数情况下它的含义是一个 git fetch 紧接着一个 git merge 命令。即 git pull 是 git fetch 和 git merge 的两步的和。

    但是由于 git pull 的使用经常令人困惑,所以通常单独显式地使用 fetch 与 merge 命令会更好一些。

    参考资料

    1. Git:远程分支----git fetch命令的使用

    2. git fetch命令的使用

  • 相关阅读:
    Oracle11gR2下PL/SQL访问网络的错误ORA24247
    安装cx_Oracle
    搭建基于FreeNAS的共享存储
    unique constraint 和 unique index 的关系
    Oracle11gR2_RAC全静默安装攻略
    struts中的constant详解 (转载)
    网摘
    用 Google 的 FaceNet 做人脸识别极客帮课程笔记
    【Linux】Git 安装最新版
    【Jmeter】性能测试EMQ X 压测
  • 原文地址:https://www.cnblogs.com/sunbines/p/14915765.html
Copyright © 2020-2023  润新知