终于重新回到了git开始的地方,探究下本地git代码仓库中.git目录。

本篇对标题中的几个概念进行简单说明。

1 HEAD

HEAD可以指向分支,也可以指向提交。

这里先说指向分支的情况。

下图为HEAD指向本地master分支。

查看.git目录下的HEAD

说明HEAD其实就是指向master分支,而master中存放的就是最新的commit(40位的sha-1值)。

2 ORIG_HEAD

在上图的.git目录可以看到还有一个ORIG_HEAD文件

查看内容,其实存放的也是commit。当进行一些有风险的操作的时候,如reset、merge或者rebase,Git会将HEAD原来所指向commit对象的sha-1值存放于ORIG_HEAD文件中。这里不做深入测试分析。

3 FETCH_HEAD

在上图的.git目录可以看到还有一个FETCH_HEAD文件

FETCH_HEAD表示某个branch在服务器上的最新状态。
每一个执行过fetch操作的项目都会存在一个FETCH_HEAD列表,其中每一行对应于远程服务器的一个分支。
当前分支指向的FETCH_HEAD, 就是这个文件第一行对应的那个分支。存在两种情况:如果没有显式的指定远程分支, 则远程分支的master将作为默认的FETCH_HEAD;如果指定了远程分支, 就将这个远程分支作为FETCH_HEAD.

4 detached HEAD

当执行 git checkout commit的时候,也就是指向提交,会变成detached HEAD的状态。

此时查看分支的话,大概显示如下:

此时如果不留心,继续进行修改提交,可能会被git回收,从而丢失代码。最好的做法是新建一个分支,再进行代码相关操作。例如,我进行如下操作:

我切换到commit d53a,注意git的提示文字,git checkout -b new-branch-name,就能在d53acommit上新建一个分支,例如我新建了temp1分支。

Git学习系列15 HEAD ORIG_HEAD FETCH_HEAD detached HEAD相关推荐

  1. Git学习系列之Git基本操作提交项目(图文详解)

    前面博客 Git学习系列之Git基本操作克隆项目(图文详解) 然后可以 cd 切换到 LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作, 实际情况可能是 使用 Ecl ...

  2. Git学习系列之Windows上安装Git之后的一些配置(图文详解)

    不多说,直接上干货! 前面博客 Git学习系列之Windows上安装Git详细步骤(图文详解) 第一次使用Git时,需要对Git进行一些配置,以方便使用Git. 不过,这种配置工作只需要进行一次便可, ...

  3. Git学习系列之如何正确且高效地将本地项目上传到Github(图文详解)

    不多说,直接上干货! 首先你需要一个Github账号,所以还没有的话先去注册吧! https://github.com/ 见 如何走上更高平台分享传递干货知识:(开通个人Github面向开源及私有软件 ...

  4. Android学习系列(15)--App列表之游标ListView(索引ListView)

    游标ListView,提供索引标签,使用户能够快速定位列表项.       也可以叫索引ListView,有的人称也为Tweaked ListView,可能更形象些吧.       一看图啥都懂了: ...

  5. Git学习系列(二)创建本地仓库及文件操作

    2019独角兽企业重金招聘Python工程师标准>>> 仓库(repository ),我们也成它为版本库.这个库里面的所有文件(包括对文件的添加.删除.修改等操作)都被Git管理起 ...

  6. Git学习系列(五)分支管理详解

    分支管理在咱们实际工作中经常用到,因此掌握分支对于咱们从事移动开发并且使用到了Git这样的分布式版本管理工具来说是很有必要的.比如当你饿了的时候,甲帮你做饭,一帮你烧菜: 当然你也可以自己做饭烧菜.但 ...

  7. Git学习系列(一)初识Git

    Git作为一个版本控制工具,在工作中我们常常会用到它,尤其是在移动开发中,Git可谓是版本管理神器.下面让我们来认识一下Git: Git是一个分布式版本控制软件,它是由Linux的作者Linus用C写 ...

  8. Git学习系列之一些常用的Git命令收录更新ing

    不多说,直接上干货!  前言 对于Git工具,有必要整理和总结一些常用实用的命令. http://p.primeton.com/articles/53cce3a3e138236138000026 ht ...

  9. Git学习系列之Git基本操作克隆项目(图文详解)

    不多说,直接上干货! 想必,能进来看我写的这篇博文的朋友,肯定是了解过. 比如SVN的操作吧,最常见的是 检出(Check out ...), 更新 (Update ...), 以及 提交(Commi ...

  10. Git学习系列之Git和TortoiseGit的区别

    不多说,直接上干货! Git和TortoiseGit的区别: TortoiseGit的安装和使用依赖Git. Git有且只有一个,就是linux最初创建的那个叫做Git的程序.现在的维护者的名字我懒得 ...

最新文章

  1. .NET 开发环境中使用VSN版本控制
  2. .net Forms身份验证不能用在应用的分布式部署中吗?
  3. [MIPS汇编语言]对于数的输入和输出
  4. find: paths must precede expression(转)
  5. InnoDB MySQL 全文索引 学习笔记
  6. 855C Helga Hufflepuff's Cup
  7. JAVA中的this怎么理解_Java中的this关键字怎么理解?
  8. CentOS6.5系统重启后宕机
  9. [react] 请说说什么是useImperativeHandle?
  10. 前端学习(3073):vue+element今日头条管理-删除文章失败(配合axios使用)
  11. InfoWorld 公布开源软件( 2019 年)
  12. 一致性哈希算法 mysql_一致性哈希算法,在分布式开发中你必须会写,来看完整代码...
  13. itsdangerous
  14. 如何使用 ggplot2 ?
  15. 从零开始的腾讯电脑管家下载安装配置教程
  16. FIB常见应用明细及原理分析
  17. c语言编程矩阵范数,矩阵2范数计算 这个二阶矩阵的二范数怎么
  18. 往届毕业生档案去向查询网_大学毕业档案怎么处理 毕业生档案去向查询
  19. 学习大数据的最佳年龄,多少岁学大数据合适
  20. beyondCompare this license key has been revoked密钥被撤销

热门文章

  1. 周杰伦他什么都知道!
  2. ubuntu浏览器突然使用不了搜狗拼音法
  3. Chrome书签同步方法
  4. import math在python种中的意思,Python中import使用
  5. android播放器适配,Android开发 MediaPlayer将视频播放时尺寸适配完美
  6. Java基础-面向对象进阶-多态包final权限修饰符代码块
  7. 【计及DG和相关性的纯交流三点估计随机潮流计算方法】
  8. AG-DST论文笔记
  9. Linux 网桥功能使用
  10. 第十二章 国民收入的决定:AD-AS模型