git命令之git fetch的用法

标签: GIT而理解 fetch 的关键是理解 FETCH_HEAD.
2014-10-16 09:54 31338人阅读 评论(1) 收藏 举报


而理解 fetch 的关键, 是理解 FETCH_HEAD.

这里需要解释下什么是FETCH_HEAD??

FETCH_HEAD指的是: 某个branch在服务器上的最新状态'.
每一个
执行过fetch操作的项目'都会存在一个FETCH_HEAD列表, 
这个列表保存在 .Git/FETCH_HEAD 文件中, 其中每一行对应于远程服务器的一个分支.
当前分支指向的FETCH_HEAD, 就是这个文件第一行对应的那个分支.

一般来说, 存在两种情况:

  • 如果没有显式的指定远程分支, 则远程分支的master将作为默认的FETCH_HEAD.

  • 如果指定了远程分支, 就将这个远程分支作为FETCH_HEAD.

常见的git fetch 使用方式包含以下四种:

  • git fetch

这一步其实是执行了两个关键操作:
创建并更新所有远程分支的本地远程分支.
- 设定当前分支的FETCH_HEAD远程服务器的master分支 (上面说的第一种情况)

需要注意的是: 和push不同, fetch会自动获取远程`新加入'的分支.

  • git fetch origin

同上, 只不过手动指定了remote.

  • git fetch origin branch1

设定当前分支的 FETCH_HEAD' 为远程服务器的branch1分支`.

注意: 在这种情况下, 不会在本地创建本地远程分支, 这是因为:

这个操作是git pull origin branch1的第一步, 而对应的pull操作,并不会在本地创建新的branch.

一个附加效果是:

这个命令可以用来测试远程主机的远程分支branch1是否存在, 如果存在, 返回0, 如果不存在, 返回128, 抛出一个异常.

  • git fetch origin branch1:branch2

只要明白了上面的含义, 这个就很简单了,

  • 首先执行上面的fetch操作
  • 使用远程branch1分支在本地创建branch2(但不会切换到该分支), 
    如果本地不存在branch2分支, 则会自动创建一个新的branch2分支, 
    如果本地存在branch2分支, 并且是`fast forward', 则自动合并两个分支, 否则, 会阻止以上操作.

  • git fetch origin :branch2

等价于: git fetch origin master:branch2

git命令之git fetch的用法相关推荐

  1. git命令及git合并分支进行多人协作

    git命令及git合并分支进行多人协作 git命令大全 git的工作区.暂存区.本地仓库和远程仓库 git常用命令 git revert 和 git reset的区别 修改默认分支 合并分支 Git分 ...

  2. git命令之git clone用法

    2015年02月26日 13:59:11 阅读数:81047 转:http://blog.csdn.net/wangjia55/article/details/8818845 在使用git来进行版本控 ...

  3. git命令之git rebase 的用法

     rebase 假设你现在基于远程分支"origin",创建一个叫"mywork"的分支. $ git checkout -b mywork origin ...

  4. 10个你应该了解的Git命令(以及Git省时小窍门)

    在本文中,我们将讨论那些作为开发人员.数据科学家或产品经理应该知道的各种各样的Git命令.并且将使用Git查看.删除和整理.此外,我们还将介绍如何使用Bash别名和Git编辑器配置转义Vim和节省时间 ...

  5. 【Git命令】Git常用命令速查 Git命令汇总

    记录Git的一些常用指令,遗忘时方便快速查询. 符号说明: []里表示可选字段 <>里表示需要用户定义的字段 1. 基础配置 配置用户签名: # 配置用户名 git config [--g ...

  6. Git命令:git常用命令

    Git 基本知识与常用指令 https://www.cnblogs.com/chiao/archive/2011/07/27/2117835.html 一.Git代码状态转换图 其中: 未被Git跟踪 ...

  7. Git 命令之Git clean

    开篇点题 git clean命令用来从你的工作目录中删除所有没有tracked过的文件 git clean -n  不会删除,只是Notification,提醒      2. git clean - ...

  8. git命令之git tag 给当前分支打标签

    git tag - 标签相关操作 发表于 2011年06月29日 由 机器猫 标签可以针对某一时间点的版本做标记,常用于版本发布. 列出标签 $ git tag # 在控制台打印出当前仓库的所有标签 ...

  9. git命令之git mergetool vi非正常退出.swp删除不了的问题

    1.git   pull命令产生无法merge的错误 使用了 git  mergetool命令然后...傻逼了 进入了vi操作界面,不会操作,非正常退出... 然后就产生了.swp相关文件,死活删除不 ...

  10. git 命令之 git commit --no-verify -m ‘XXX‘

    过往的开发中一多多少少会用一些可视化git提交工具,比如小乌龟,sourcetree,但是今天遇到了一个奇葩的问题,git的sourcetree代码提交不上去.解决方式如下 git commit -- ...

最新文章

  1. 2017元旦,你被闰秒吓到了吗? - 闰秒背景与数据库处理
  2. MFC里的GDI CDC HDC到底是什么?
  3. 用hyperledger cello H3C分支创建单机模式区块链系统
  4. 【Python】Python第三方库安装
  5. Java中==和equals、equals和hashCode的关系详解
  6. 保罗兰德作品赏析_保罗兰德——理想化的设计师人生
  7. DXUT实战3:HLSL(withEffect)+D3D9+DXUT(june_2010) . .
  8. vecm模型怎么写系数_VAR模型与向量VECM模型(7)
  9. php gd保存图片,PHP: GD - Manual
  10. 德国人预测世界杯: 冠军是西班牙!
  11. [C++]一个拥有音乐播放器所有基本功能的音乐库
  12. PAT 1010 月饼
  13. 构建OctoberCMS插件:Google Analytics(分析)
  14. python实现免费同声传译 (离线语音识别+免费翻译接口+系统声音录制)
  15. 67.220.92.12 /forum index.php,http://67.220.92.21/forum/inde PHP静态类
  16. 探索 Sa-Token (一) SpringBoot 集成 Sa-Token
  17. TypeScript 高级类型及用法
  18. 密码(Password)
  19. 6. 彤哥说netty系列之Java NIO核心组件之Buffer
  20. c语言交通违章编程代码,C语言程序设计之交通处罚单管理系统报告(内含代码)...

热门文章

  1. 御用导航提示提醒_AR实景导航,让你安全驾驶,不再“绕弯”
  2. 教你分辨真假苹果官方售后维修点就是这么简单!!
  3. CDN 回源与文件预热
  4. ubuntu的不同版本
  5. 毛选-实践论-辩证唯物论的认识论-知行统一观
  6. ERROR: HHH000388: Unsuccessful: create table
  7. SED替换字符串用法
  8. 为了IT,加强身体锻炼之【双盘腿打坐的好处】
  9. 许奔创新社-第29问:什么是创新者的王者匠心?
  10. 意外把移动硬盘标记为活动分区怎么办?