参考资料


本文讲述的 是 git 命令中的 HEAD ,适用于 github ,不适用于 gerrit

  • git-recipes 这个链接是一个比较好的git教程


本文不对git进行介绍,只是收集一些和 HEAD 相关的链接

  • 实例
$ git branch -adev
* masterremotes/origin/HEAD -> origin/masterremotes/origin/devremotes/origin/master
  • 解读
1/第一个HEAD
从上面的示例可以看到有第三行有 一个 * 号.这个是一个HEAD 标识
2/第二个HEAD
第四行有一个 HEAD ,这个HEAD 是 remotes/origin/HEAD-----------------在文件中1/第一个HEAD
$ cat .git/HEAD
ref: refs/heads/dev2/第二个HEAD
$ cat  .git/refs/remotes/origin/HEAD
ref: refs/remotes/origin/master

HEAD的实质,请参见

  • 第一个HEAD

  • 第一个HEAD+

  • 第二个HEAD


else

  • 从上面可以看到 第一种HEAD 都是指向了分支,分支指向了分支上的最新提交
  • 其实HEAD除了可以指向分支,也可以指向提交
  • 具体请参见 2.5 检出之前的提交
git checkout <commit>更新工作目录中的所有文件,使得和某个特定提交中的文件一致。
你可以将提交的哈希字串,或是标签作为 <commit> 参数。这会使你处在分离 HEAD 的状态。当HEAD处于分离状态(不依附于任一分支)时,提交操作可以正常进行,但是不会更新任何已命名的分支。(你可以认为这是在更新一个匿名分支。)
$ git checkout 3e61d72da33650ecb5b6ac4b8395fde3c4fb950c
Note: checking out '3e61d72da33650ecb5b6ac4b8395fde3c4fb950c'.You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:git checkout -b <new-branch-name>HEAD is now at 3e61d72... 10$ git status
HEAD detached at 3e61d72
nothing to commit, working directory clean$ cat .git/HEAD
3e61d72da33650ecb5b6ac4b8395fde3c4fb950c$ git checkout master
Previous HEAD position was 3e61d72... 10
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
  • 综上: head 指向提交,也可以指向分支.
  • 分支永远指向 分支上的最新提交

git 中 HEAD 概念相关推荐

  1. 附录002《 Git 中的重要概念》

    文档:< Git 中的重要概念> 作者:燕志伟 时间:2020-06-02 版权:原创 前言 在进行深度学习的过程中,不免会接触到 Git 这个代码版本管理工具.对于小白而言,上手一些常用 ...

  2. Git中pull,commit和push的概念

    简而言之: pull:将代码托管平台上的代码下载到本地代码仓库 push:将本地代码仓库的代码上传到代码托管平台 commit:将我们编辑或正在编辑的代码提交到我们的本地代码仓库 参考文章:Git中p ...

  3. 在Git中,HEAD,工作树和索引之间有什么区别?

    有人能告诉我在Git中HEAD,工作树和索引之间的区别吗? 据我所知,它们都是不同分支的名称. 我的假设是否正确? 编辑 我找到了这个 单个git存储库可以跟踪任意数量的分支,但是您的工作树只与其中一 ...

  4. 【Git】Git 基础命令 ( Git 版本库概念 | 创建版本库 git init | 克隆版本库 git clone )

    文章目录 一.Git 版本库概念 二.创建版本库 git init 三.克隆版本库 git clone 一.Git 版本库概念 Git 版本库概念 : Git 版本库 Repository 又称为 G ...

  5. git入门:概念、原理、使用

    git和Github 概念 Git --- 版本控制工具(命令). 工具介绍官方网站:http://git-scm.com 工具下载地址:http://git-scm.com/download/ gi ...

  6. Git的基本概念/常用命令及实例

    Git的基本概念/常用命令及实例 什么是仓库 在 Git 的概念中,仓库,就是你存在.git目录的那个文件夹内的所有文件,包括隐藏的文件,Git程序会再当前目录以及上级目录查找是否存在.git文件,如 ...

  7. git 还原文件到其他版本_如何在Git中还原旧文件版本

    git 还原文件到其他版本 读: 第1部分:什么是Git? 第2部分:Git入门 第3部分:创建第一个Git存储库 第4部分:如何在Git中还原旧文件版本 第5部分:3个用于Git的图形工具 第6部分 ...

  8. 那些git中常见的面试题及知识点

    1.列举工作中常用的git命令 1.新增文件的命令:git add file或者git add . 2.提交文件的命令:git commit –m或者git commit –a 3.查看工作区状况:g ...

  9. Git中的工作区和暂存区

    Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 0. 相关专业名词 staged changes:已更改的东西 unstaged changes:未更改的东西 stage 暂存区 ...

  10. git中“我们的”和“他们的”的确切含义是什么?

    本文翻译自:What is the precise meaning of "ours" and "theirs" in git? This might soun ...

最新文章

  1. Python 函数初识 (1)
  2. vue打包后axios返回html,vue项目封装axios并访问接口
  3. 国际财务报告准则 IFRS 与信息系统
  4. matlab kill
  5. Dubbo使用Zooker注册服务
  6. 机器人军团【动态规划】
  7. springcloud微服务系列之服务注册与发现组件Eureka
  8. corosync +drbd实现HA MariaDB
  9. 视觉平衡与物理平衡_简单聊聊摄影“视觉平衡”那些事
  10. 【指纹识别】基于matlab GUI指纹识别匹配门禁系统【含Matlab源码 587期】
  11. OSPF配置命令总结
  12. BT下载4K电影、视频
  13. JavaCV推流实战(MP4文件)
  14. 你的个税APP还好么?从个税APP看并发
  15. 租用服务器多开虚拟机,云服务器多开虚拟机
  16. git 上传文件过大问题
  17. 2021年中国机动车保有量及机动车污染物排放情况分析[图]
  18. Kubernetes:通过轻量化工具 kubespy 实时观察YAML资源变更
  19. 使用AFN上传图片 下载图片
  20. 2023年网络安全比赛--Web综合渗透测试中职组(超详细)

热门文章

  1. html 数字大小写转换,数字大小写转化
  2. 【华为机试真题 Python实现】竖直四子棋
  3. 一些相似单词的区别之处
  4. VS加载DLL报---找不到指定的模块(126)
  5. macos 微信小助手
  6. AxureRP实战(二)Banner轮播图交互(基础篇)
  7. USB转TTL、USB转RS232的实现
  8. Unity3d+C#斗地主学习探究1
  9. [实战]制作简单的公众号二维码关注图
  10. 数据库系统原理与应用教程(039)—— MySQL 查询(一):SELECT 命令的语法分析