一句话总结:
HEAD本质上是一个指针,branch其实也是一个链表,我们下文会进行一步步操作,做验证

HEAD指针可以什么都不指向,也可以指向某一个分支的某一个commit上。

HEAD最终落脚于某一个分支的具体的commit的
我们想要比对两个分支之间的差异,使用的是diff命令

git diff 分支1 分支2

也可以使用两个commit具体的地址号进行比对,HEAD也可以指代当前的分支的某一次提交,可以使用HEAD^1表示HEAD的父类,也就是分支上的上一次提交,上上一次呢?HEAD^1^1

git diff HEAD HEAD~1 # HEAD指代的分支提交的跟上一次的比较
git diff HEAD HEAD^1 # HEAD指代的分支提交的跟上一次的比较
git diff HEAD HEAD^^ # 最近的一次提交对比上上一次提交
git diff HEAD HEAD~2 # 最近的一次提交对比上上一次提交

分离头指针

当我们直接通过git checkout ‘commit的hash编号’ 进行操作时,其实将我们的头指针指向了一个老的提交信息那,把头指针放到了一个全新的没有被git“承认”的未命名分支上了。虽然我们看起来还在某一个分支上,其实头指针已经和当前的分支分离了。

这时我们再看git log,可以看到HEAD指针没有指向任何的分支

此时我们再做的一些提交和变更,也是可以的,但是如果我们此时,切换回了其他的分支,我们在这个未命名的分支上做的所有操作,都不会被存储。

  • 如何弥补呢?
    可以进行创建新的分支,用以保存,我们在这个未命名的分支上所做的所有改动。
git branch <new-branch-name> '提交的编号'

【Git】Git的HEAD和branch的理解相关推荐

  1. 关于git中,两个branch自动同步的问题和解决

    关于git中,两个branch自动同步的问题和解决 1问题描述 2问题原因 3解决方法 1问题描述 在git中,如果在一个branch中对代码进行了修改,切不做任何操作直接checkout另一个bra ...

  2. git push 出现 The current branch dev has no upstream branch.的问题

    git push 出现 The current branch dev has no upstream branch.的问题 原因:本地分支没有和远程分支关联,导致无法push 解决方法:git pus ...

  3. [Git] Git整理(一) Git的安装、配置和基本操作

    参考网站:https://git-scm.com/book/zh/v2/ 1.版本控制简介 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统,在版本控制发展的历史中,首先出 ...

  4. git: git add --ignore-removal git add --all 区别

    遇到的问题 在仓库中删除文件后,试图直接用 git add . 将所有删除工作提交暂存区,结果遇到了报错: $ git add . warning: You ran 'git add' with ne ...

  5. 初探Git git基本用法

    Git 是当前最流行的版本控制程序之一,文本包含了 Git 的一些基本用法 创建 git 仓库 初始化 git 仓库 mkdir project # 创建项目目录 cd project # 进入到项目 ...

  6. 这才是真正的Git——Git实用技巧

    作者:lzaneli,腾讯 TEG 前端开发工程师 本篇是这个系列的最后一篇文章,之前的文章主要讲的是基础原理部分(见上方专辑),在理解原理的基础上,介绍一些实用的技巧给大家,希望能提高大家的开发效率 ...

  7. git编辑器选哪个_[Git]Git创建和修改代码库

    有了上一篇的简易Git使用指南,接下来我们就可以创建自己的代码库了 创建代码库 1.把文件夹变成git文件夹 git init 这样子就这里面的内容就可以git了 2.把要git的文件放入暂存区 gi ...

  8. 手把手教你入门Git --- Git使用指南(Linux)

    手把手教你入门Git - Git使用指南(Linux) 系统:ubuntu 18.04 LTS 本文所有git命令操作实验具有连续性,git小白完全可以从头到尾跟着本文所有给出的命令走一遍,就会对gi ...

  9. git git 查看远程库_如何从Git远程存储库中提取

    git git 查看远程库 Note: This the fourth video in the Git for beginners series. Watch the first video her ...

  10. 什么是Git?——Git的学习与使用(一)

    本系列博文将介绍Git以及相关工具的基本使用,主要参考书籍<Pro Git>.对其中的内容进行总结梳理.Git是一个版本控制工具,不管是我们自己的学习或者是公司的项目,一般都会使用一个版本 ...

最新文章

  1. java 微信支付实现
  2. Apache seaTunnel的本地启动
  3. commit 规范性提交
  4. 【比赛经验】ALL in BERT:一套操作冲进排行榜首页
  5. Windows搭建SVN实现访问远程SVN库
  6. 8086 MOV 指令的注意事项
  7. Thrift 的原理和使用
  8. 线粒体和叶绿体的基因组特点_叶绿体和线粒体基因组的组装研究
  9. Sitecore 8.2 防火墙规则的权威指南
  10. ios 图片简单360度旋转动画
  11. 没有人会疼自己没人会懂,会理解:伤感空间日志
  12. mysql组合索引没效果的原因
  13. JAVA视频学习笔记-马士兵(六)
  14. 历届试题 九宫重排 广度优先搜索+康拓排序
  15. Java 程序员常用的开发工具
  16. 做视频什么配置计算机合适,装机干货!两款适合视频剪辑的电脑配置
  17. 一文读懂区块链隐私技术系列之环签名
  18. 软件测试人员正在逐步被自动化所替代
  19. 如果你觉得学习 Git 很枯燥,那是因为你还没玩过这款游戏!
  20. tomcat 黑马学习笔记

热门文章

  1. 列表排序-第14届蓝桥杯STEMA测评Scratch真题精选
  2. DHCP协议说明及报文分析
  3. Android Native 代码 Release 编译 - 隐藏符号表
  4. 什么是JavaBean?什么是Bean?
  5. "Selenium + Firefox"如何使用带用户名密码认证的HTTP代理
  6. pubg体验服服务器维护,简单1招,教你快速获得《Pubg Mobile》体验服“邀请码”!...
  7. Excel除了复制粘贴,更快速的将单元格区域的公式转换成数值?
  8. JM中的一些问题总结
  9. R的绘图(二)——基本图形
  10. 天津出差系列(一)----第一天