Git 学习日记–git fetch参数

参考链接:https://oschina.gitee.io/learn-git-branching


背景

git fetch执行后完成两个步骤:

  1. 从远程仓库下载本地仓库中缺失的提交记录
  2. 更新远程分支指针(如origin/master

git fetch实际上将本地仓库中的远程分支更新成了远程仓库相应分支最新的状态

git fetch通常通过互联网(HTTPS协议和SSH等协议)与远程仓库通信。

注意:

git fetch并不会改变你本地仓库的状态,也不会修改你磁盘上的文件,git fetch为单纯的下载操作。

git fetch origin/master + git merge origin/master = git pull:下载并更新为远程仓库的内容,即同步

git fetch 的参数

类似于git push的参数方法,git fetch的参数非常类似,他们的概念是相同的,方向是相反的(此处为下载而非上传)

  • <place>参数

    git fetch origin <place>:从远程<place>分支上拉取到本地对应的分支上
    在这里插入图片描述

    • 执行git fetch origin foo命令后,会从远程foo分支下载,并更新本地的o/foo分支,没有更新本地的非远程分支foo
      在这里插入图片描述
  • <source>:<destation>参数

    命令能够直接更新本地分支,不过不能在检出当前分支上干这件事,在其他分支上可以。fetch的两个参数与git push是正好相反的:

    • <source>指的是远程仓库中的位置
    • <destation>是要放置提交的本地仓库的位置

在这里插入图片描述

  • 执行 git fetch origin foo~1:barGitfoo~1解析成一个 origin 仓库的位置,然后将那些提交记录下载到了本地的 bar 分支(一个本地分支)上。注意由于我们指定了目标分支,fooo/foo 都没有被更新:

在这里插入图片描述

  • 如果目标分支不存在,即本地分支不存在目标分支情况,会和 git push 一样,Git 会在 fetch 前自己创建立本地分支, 就像是 Gitpush 时,如果远程仓库中不存在目标分支,会自己在建立一样。

在这里插入图片描述

  • 执行git fetch origin foo~1:bar
    在这里插入图片描述

  • 没有参数

    它会下载所有的提交记录到各个对应的远程分支上:
    在这里插入图片描述

例子

  • 初始状态
    在这里插入图片描述

  • 目标状态
    在这里插入图片描述

  • 执行git fetch origin foo:master,即从远程的foo分支上提取更新到本地master分支上:
    在这里插入图片描述

  • 执行git fetch origin master^:foo远程master分支的前一个更新点下载更新到本地的foo分支:
    在这里插入图片描述

  • 执行git merge master,切换到foo分支,并合并本地mergefoo分支:
    在这里插入图片描述


骚操作

git fetchgit push均能带<source>参数,但是也能够省略该参数,直接接冒号,再接<destation>参数:

  • git push origin :foo:删除远程仓库的foo分支
  • git fetch origin :bar:在本地分支创建bar分支

git pull 的参数

背景

git pull 其实就是fetch后面跟merge的缩写,可以理解为使用同样的参数执行git fetch,然后再merge你所抓到的提交记录

参数

  • 只有<place>参数:

    git pull origin foo相当于:

    git fetch origin foo; git merge o/foo

  • <source><destation>参数:

    git pull origin bar~1:bugFix相当于:

    git fetch origin bar~1:bugFix; git merge bugFix,注意:可不在bugFix分支

例子

  • 初始状态:注意本地在master分支上
    在这里插入图片描述

  • 目标状态:
    在这里插入图片描述

  • 执行 git pull origin bar:foo,从远程分支上bar拉取更新的到本地,并创建本地分支foo,同时将该分支合并到master分支上:
    在这里插入图片描述

  • 执行 git pull origin master:side,从远程分支上master拉取更新的到本地,并创建本地分支side,同时将该分支合并到master分支上:
    在这里插入图片描述

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐