Git fetch pull 详解
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 详解相关推荐
- git fetch命令详解
git fetch 一旦远程主机的版本库有了更新(Git术语叫做commit),需要将这些更新取回本地,这时就要用到git fetch命令. $ git fetch <远程主机名> 上面命 ...
- Git 常用命令详解
Git 常用命令详解 1. Git 常用命令 1.1 常用git 命令图表汇总 1.2 配置个人信息 1.3 创建版本库 1.4 常用Git命令汇总 2. Git 解决代码冲突 3. Git 分支管理 ...
- 【git】git冲突解决详解
git冲突解决详解 方法1:pull下来然后修改冲突文件 方法2: cherry-pick然后checkout git merge时,不免产生各种各样的冲突,可是我们连如何选择版本都晕半天,这里进行详 ...
- Git 远程操作详解(再不会 Git 就真的没团队收你了,嗯哼)
Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...
- Git客户端图文详解如何安装配置GitHub操作流程攻略
Git客户端图文详解如何安装配置GitHub操作流程攻略 软件应用 爱分享 3个月前 (08-15) 8896浏览 0评论 Git介绍 分布式 : Git版本控制系统是一个分布式的系统, 是用来 ...
- git checkout 命令详解—— Git 学习笔记 16
git checkout 命令详解 概览 git checkout 这条命令的常用格式如下: 用法一 git checkout [<commit>] [--] <paths> ...
- git reset 命令详解(二)—— Git 学习笔记 08
git reset 命令详解(二) 上一篇博文git reset 命令详解(一)讲了 git reset 命令的基本原理和用法,这篇博文谈一谈 git reset 的另一种用法--后面跟一个路径(或文 ...
- git reset 命令详解(一)—— Git 学习笔记 07
git reset 命令详解(一) 简而言之,git reset 命令是用来将当前 branch 重置到另外一个 commit 的,这个动作可能同时影响到 index 以及 work director ...
- git diff命令详解
git diff命令详解 diff里面a表示前面那个变量,b表示第二个变量 HEAD commit版本 Index staged版本 a.查看尚未暂存的文件更新了哪些部分,不加参数直接 ...
最新文章
- app显示服务器图片不显示,如何读取并显示服务器上不在webapp目录上的图片?
- 科略教育——执行力的3W管理法
- LINUX文件系统介绍
- 使用aconda3-5.1.0(Python3.6.4) 搭建pyspark远程部署
- Controller @Autowired注解 无法注入值为null的问题
- C 标准库—— stdlib.h(包括 rand srand 的实现)
- Werkflow java_几大工作流引擎对比
- 海康摄像头监控预览二开,萤石云对接说明
- 百度云盘电影无字幕,如何寻找字幕加字幕?
- Briarcliff Entertainment 购买了关于开创性的非裔美国 NBA 球员的电视剧“Sweetwater”(独家)
- Spring cacheable
- Latex 字母上面加符号 波浪线 横线 角号等
- 一加8T 原装65W WARP闪充 充电功率记录
- MySQL5数据库更改默认等待连接时间(wait_timeout)
- 前端学习之版心和布局流程
- 看一遍就理解:IO模型详解
- 去电脑培训班要考证吗
- [存储]NVMe-2-PCIe总线寄存器
- linux fork
- 基于NSGAII的多目标遗传优化算法的matlab仿真
热门文章
- 2020笔记本性价比之王_2020轻薄本性价比之王_2020轻薄本哪款好
- java实现Fmeasure计算_聚类结果的评估指标及其JAVA实现
- 使用 Eclipse 建立包的时候,“name”下可选项“Create package-info.java”的作用是什么?
- 一、Pytho第一课——Python安装及配置路径方法(最详细小白教程,没有之一。如若不懂,不是还可以私信嘛!对吧?)
- MySQL线上优化_线上MySQL千万级大表,如何优化?
- 两阶段最小二乘法原理_R语言代写工具变量与两阶段最小二乘法
- gradle 查看依赖类库版本_Android studio中查看依赖的第三方库的历史版本和最新版本...
- php适用于什么服务器,php – 找不到laravel类(适用于localhost但不适用于DO服务器)...
- pyecharts anaconda_Pyecharts安装使用和绘图案例
- java异常处理方式推荐做法_谈谈Java异常处理这件事儿