1、简单概括
先用一张图来理一下git fetch和git pull的概念:

可以简单的概括为:

git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。

而git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

下面我们来详细了解一下git fetch 和git pull 的用法。

2、分支的概念
在介绍两种方法之前,我们需要先了解一下分支的概念: 
分支是用来标记特定代码的提交,每一个分支通过SHA1sum值来标识,所以对分支的操作是轻量级的,你改变的仅仅是SHA1sum值。

如下图所示,当前有2个分支,A,C,E属于master分支,而A,B,D,F属于dev分支。

A----C----E(master)
 \
  B---D---F(dev)

它们的head指针分别指向E和F,对上述做如下操作:

git checkout master  //选择or切换到master分支
git merge dev        //将dev分支合并到当前分支(master)中

合并完成后:

A---C---E---G(master)
 \         /
  B---D---F(dev)

现在ABCDEFG属于master,G是一次合并后的结果,是将E和F的代码合并后的结果,可能会出现冲突。而ABDF依然属于dev分支。可以继续在dev的分支上进行开发:

A---C---E---G---H(master)
 \         /
  B---D---F---I(dev)

分支(branch)的基本操作:

git branch //查看本地所有分支

git branch -r //查看远程所有分支

git branch -a //查看本地和远程的所有分支

git branch <branchname> //新建分支

git branch -d <branchname> //删除本地分支

git branch -d -r <branchname> //删除远程分支,删除后还需推送到服务器
git push origin:<branchname>  //删除后推送至服务器

git branch -m <oldbranch> <newbranch> //重命名本地分支
/**
*重命名远程分支:
*1、删除远程待修改分支
*2、push本地新分支到远程服务器
*/

//git中一些选项解释:

-d
--delete:删除

-D
--delete --force的快捷键

-f
--force:强制

-m
--move:移动或重命名

-M
--move --force的快捷键

-r
--remote:远程

-a
--all:所有

3、git fetch 用法
git fetch 命令:

$ git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地

如果只想取回特定分支的更新,可以指定分支名:

$ git fetch <远程主机名> <分支名> //注意之间有空格

最常见的命令如取回origin 主机的master 分支:

$ git fetch origin master

取回更新后,会返回一个FETCH_HEAD ,指的是某个branch在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息:

$ git log -p FETCH_HEAD

如图:

可以看到返回的信息包括更新的文件名,更新的作者和时间,以及更新的代码(19行红色[删除]和绿色[新增]部分)。

我们可以通过这些信息来判断是否产生冲突,以确定是否将更新merge到当前分支。

4、git pull 用法
前面提到,git pull 的过程可以理解为:

git fetch origin master //从远程主机的master分支拉取最新内容 
git merge FETCH_HEAD    //将拉取下来的最新内容合并到当前所在的分支中

即将远程主机的某个分支的更新取回,并与本地指定的分支合并,完整格式可表示为:

$ git pull <远程主机名> <远程分支名>:<本地分支名>

如果远程分支是与当前分支合并,则冒号后面的部分可以省略:

$ git pull origin next

Git fetch pull 详解相关推荐

  1. git fetch命令详解

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

  2. Git 常用命令详解

    Git 常用命令详解 1. Git 常用命令 1.1 常用git 命令图表汇总 1.2 配置个人信息 1.3 创建版本库 1.4 常用Git命令汇总 2. Git 解决代码冲突 3. Git 分支管理 ...

  3. 【git】git冲突解决详解

    git冲突解决详解 方法1:pull下来然后修改冲突文件 方法2: cherry-pick然后checkout git merge时,不免产生各种各样的冲突,可是我们连如何选择版本都晕半天,这里进行详 ...

  4. Git 远程操作详解(再不会 Git 就真的没团队收你了,嗯哼)

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  5. Git客户端图文详解如何安装配置GitHub操作流程攻略

    Git客户端图文详解如何安装配置GitHub操作流程攻略 软件应用 爱分享  3个月前 (08-15)  8896浏览  0评论 Git介绍 分布式 : Git版本控制系统是一个分布式的系统, 是用来 ...

  6. git checkout 命令详解—— Git 学习笔记 16

    git checkout 命令详解 概览 git checkout 这条命令的常用格式如下: 用法一 git checkout [<commit>] [--] <paths> ...

  7. git reset 命令详解(二)—— Git 学习笔记 08

    git reset 命令详解(二) 上一篇博文git reset 命令详解(一)讲了 git reset 命令的基本原理和用法,这篇博文谈一谈 git reset 的另一种用法--后面跟一个路径(或文 ...

  8. git reset 命令详解(一)—— Git 学习笔记 07

    git reset 命令详解(一) 简而言之,git reset 命令是用来将当前 branch 重置到另外一个 commit 的,这个动作可能同时影响到 index 以及 work director ...

  9. git diff命令详解

    git diff命令详解 diff里面a表示前面那个变量,b表示第二个变量 HEAD     commit版本 Index     staged版本 a.查看尚未暂存的文件更新了哪些部分,不加参数直接 ...

最新文章

  1. app显示服务器图片不显示,如何读取并显示服务器上不在webapp目录上的图片?
  2. 科略教育——执行力的3W管理法
  3. LINUX文件系统介绍
  4. 使用aconda3-5.1.0(Python3.6.4) 搭建pyspark远程部署
  5. Controller @Autowired注解 无法注入值为null的问题
  6. C 标准库—— stdlib.h(包括 rand srand 的实现)
  7. Werkflow java_几大工作流引擎对比
  8. 海康摄像头监控预览二开,萤石云对接说明
  9. 百度云盘电影无字幕,如何寻找字幕加字幕?
  10. Briarcliff Entertainment 购买了关于开创性的非裔美国 NBA 球员的电视剧“Sweetwater”(独家)
  11. Spring cacheable
  12. Latex 字母上面加符号 波浪线 横线 角号等
  13. 一加8T 原装65W WARP闪充 充电功率记录
  14. MySQL5数据库更改默认等待连接时间(wait_timeout)
  15. 前端学习之版心和布局流程
  16. 看一遍就理解:IO模型详解
  17. 去电脑培训班要考证吗
  18. [存储]NVMe-2-PCIe总线寄存器
  19. linux fork
  20. 基于NSGAII的多目标遗传优化算法的matlab仿真

热门文章

  1. 2020笔记本性价比之王_2020轻薄本性价比之王_2020轻薄本哪款好
  2. java实现Fmeasure计算_聚类结果的评估指标及其JAVA实现
  3. 使用 Eclipse 建立包的时候,“name”下可选项“Create package-info.java”的作用是什么?
  4. 一、Pytho第一课——Python安装及配置路径方法(最详细小白教程,没有之一。如若不懂,不是还可以私信嘛!对吧?)
  5. MySQL线上优化_线上MySQL千万级大表,如何优化?
  6. 两阶段最小二乘法原理_R语言代写工具变量与两阶段最小二乘法
  7. gradle 查看依赖类库版本_Android studio中查看依赖的第三方库的历史版本和最新版本...
  8. php适用于什么服务器,php – 找不到laravel类(适用于localhost但不适用于DO服务器)...
  9. pyecharts anaconda_Pyecharts安装使用和绘图案例
  10. java异常处理方式推荐做法_谈谈Java异常处理这件事儿