一、git clone

Git 的 clone 命令的工作如下:

1、自动将远程主机命名为 origin,拉取它的所有数据。

2、创建一个指向它的 master 分支的指针,并且在本地将其命名为 origin/master。

3、创建一个与 origin 的 master 分支在指向同一个地方的本地 master 分支。

二、git fetch

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

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

本地提交了 D0 和 D1:

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

2、同步

如果要同步远程库到你的工作,运行 git fetch origin 命令。

$ git fetch origin

这个命令功能:

(1)查找 “origin” 是哪一个服务器,从中抓取本地没有的数据;

(2)更新本地数据库,移动 origin/master 指针指向新的、更新后的位置。

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

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

3、在 origin/master 后继续工作

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

$ git checkout -b test(本地分支) origin/master(远程分支)

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

4、合并

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

$ git chekout master
$ git merge origin/master

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

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

(SAW:Game Over!)

Git / git clone 、git pull 和 git fetch相关推荐

  1. git fork clone 区别_Working with Git | Git 与 GitHub

    关于 各位好,这里是 China's Prices Project 项目的知乎专栏.关于 CPP 项目,您可以在这篇文章里了解到更多的信息.若您对这个项目感兴趣,我们非常欢迎您与我们交流您的想法与见解 ...

  2. error: could not find git for clone of XXX

    error: could not find git for clone of XXX 安装git sudo apt-get install git

  3. 使用git命令导出项目_【git学习】SVN项目迁移到Git操作指南

    参考链接 在迁移的过程中,参考了以下的链接: 第一步.建立SVN用户到git用户的映射文件在 Subversion,每个提交者在都在主机上有一个用户名,记录在提交信息中.如果想让已有的信息更好的映射到 ...

  4. 彻底理解git 本地分支与远程分支,以及git pull与git fetch的区别, 以及git status输出的“Your branch is behind xxx”

    git 本地分支: 当clone一个远程repo之后,默认会新建一个master或main的本地分支. 比如: $ git branch -a * mainremotes/origin/HEAD -& ...

  5. 详解git pull和git fetch的区别:

    前言 在我们使用git的时候用的更新代码是git fetch,git pull这两条指令.但是有没有小伙伴去思考过这两者的区别呢?有经验的人总是说最好用git fetch+git merge,不建议用 ...

  6. 玩转GIT系列之【git pull和git fetch的区别】

    大家都知道,git中从远程的分支获取最新的版本到本地有2个命令,git pull和git fetch.但是,这两个命令究竟有什么区别?使用时候该怎么选择呢?很多人不是很清楚,我自己也不是很清楚.今天就 ...

  7. fetch git pull 切换_git fetch git pull

    解析.git文件夹 进入正题之前,我们先来看看.git文件夹 1.config配置文件 [core] repositoryformatversion = 0 filemode = true bare ...

  8. 解决:YOLOv5 is out of date by 16 commits. Use ‘git pull‘ or ‘git clone

    当出现: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with o ...

  9. git fork clone 区别_我的Git笔记

    每次用到git,总会遇到一些问题,所以写这篇文章记录一下. fork 等fork完之后,你可以在自己的仓库中看到同名的项目,URL的形式:https://github.com/your_name/re ...

最新文章

  1. 导出到Excel的操作
  2. 树 - 定义和基本概念
  3. 创建支持nginx服务的docker镜像
  4. curl循环监控_阿里巴巴开源性能监控神器Arthas
  5. android模拟器太卡,安卓模拟器安装之后太卡怎么解决
  6. OpenShift 4 之 Hello-OpenShift
  7. Linux中配置网桥
  8. ObjC学习7-C语言特性
  9. .Net与 WebAssembly 随笔
  10. tomcat 404错误 原因_软件测试人员定位bug原因的10大妙招分享
  11. C语言 二进制文件读写实例讲解
  12. 泛娱乐出海走出水土不服,元宇宙社交诞生新机会!
  13. 为什么 wait, notify 和 notifyAll 这些方法不在 thread 类里面?
  14. UI设计初学者必入门必看!
  15. 服务器中内存不够的原因
  16. Mybatis 报The error occurred while handling results
  17. 优质的服务+智能+完美的线路=AI智能语音机器人
  18. 使用simulink进行stm32开发1
  19. 代码的“门面”——模式系列谈之Facade模式
  20. Linux find 实战

热门文章

  1. Centos7安装配置Xhgui
  2. fdisk 磁盘分区命令
  3. objective-c 2.0的字面量Literals
  4. kaggle 训练自己的cycleGan
  5. 一篇文章教你弄懂SpringMvc中的HttpMessageConverter
  6. Hive架构及安装部署(远程数据库模式MySQL)
  7. veth-pair技术在docker中的应用(docker网络通信)及tomcat Dockerfile示例
  8. Python Django 生成随机字符串UUID的使用示例
  9. Redis如何淘汰过期的keys
  10. 研究 Dubbo 网卡地址注册时的一点思考