当前位置: 首页 > article >正文

Git版本控制 – 使用HEAD

Git版本控制 – 使用HEAD

Version Control by Git - Using HEAD

By Jackson@ML

在使用Git进行版本控制过程中,Git中HEAD的作用至关重要。因此,理解和使用HEAD对有效管理repository非常重要。

本文简要介绍HEAD在Git版本控制中的概念和作用,以及一些具体示例,希望对读者有所帮助。

1. Git HEAD定义

在Git中,HEAD就是在repository中当前check-out的一个引用。例如:C语言中的指针概念,和HEAD类似但不完全等同。

2. Git中HEAD流程

HEAD即对当前项目中repository,当使用checkout命令动作时,对commit的引用。基本上是指向该branch中最新commit的指针或符号引用。每一次切换branch或者checkout时,HEAD都会相应地移动变更,以指向相关的commit。

对于当前checkout的branch,它的最新commit由HEAD表示,并且其哈希ID(Hashed ID)也会相应改变。从某种程度讲,指向任何引用的指针。”current branch”(当前分支)可被视为HEAD。

当我们使用”checkout”命令切换branch时,HEAD将移动到新的branch,新的HEAD对应的哈希ID随之改变。

在这里插入图片描述

3. HEAD示例

1) 安装Git

安装Git到计算机,具体安装过程参照以下文章:

  • 2025最新版Git安装使用指南

安装完毕后,打开Git Bash终端;使用以下命令得知当前路径:

$ pwd

可以看到目前的路径是/administrator。

2) 创建和测试本地repository
  • 创建项目文件夹
$ mkdir projects
  • 切换到项目文件夹
$ cd projects
  • 查看文件列表
$ ls -la
  • 切换到测试用repository文件夹test-repo
$ cd test-repo

操作结果如下图所示。

在这里插入图片描述

3) 创建branch

原先项目默认创建的branch是main, 现在根据需要,要创建新的branch

  • 查看当前git branch及状态
$ git branch
$ git status

结果如下图所示。
在这里插入图片描述

  • 创建一个新的branch,名为testing
$ git checkout -B testing

在这里插入图片描述
创建新的branch后,利用git branch可以查看到当前branch是testing。

  • 查看新增branch的HEAD信息
$ cat .git/HEAD

得到结果如下图所示。
在这里插入图片描述

  • 切换branch返回到main,再查看HEAD信息
$ git checkout main
$ cat .git/HEAD

在这里插入图片描述
经过比较,可以明显看到不同branch的HEAD信息不同。

  • 比较HEAD的哈希ID
1)查看当前main branch的哈希ID值。
$ cat .git/refs/heads/main

在这里插入图片描述
得到结果是以25efaed开头的单一哈希ID值。

2)切换到testing的branch,再查看HEAD信息和哈希ID。
$ git checkout testing
$ cat .git/refs/heads/testing

在这里插入图片描述
得到结果是以7cbff开头的单一哈希ID值。说明HEAD的引用值改变了,因为此时变更到新的branch了,引用也改变了。

技术好文陆续推出,敬请关注和点赞。
您的认可,我的动力!😊

相关阅读:

  1. 2025最新版Git安装使用指南
  2. Git版本控制 - 创建使用repository
  3. Git版本控制 - 创建和维护项目repository

http://www.kler.cn/a/513641.html

相关文章:

  • 线性规划:机器学习中的优化利器
  • python进程池、线程池
  • Python 脚本-扫描当前目录和所有子目录并显示它们的大小。
  • Kotlin协程中withContext、async 和 launch 的区别
  • mybatis(19/134)
  • C++ ——— 模拟实现 vector 类
  • 【三维分割】Gaga:通过3D感知的 Memory Bank 分组任意高斯
  • Arthas工具详解
  • 03垃圾回收篇(D1_垃圾收集器算法底层导论)
  • 解锁Java正则表达式替换的高级玩法
  • 【矩形拼接——分类讨论】
  • 蓝桥与力扣刷题(73 矩阵置零)
  • Maven多环境打包方法配置
  • SpringBoot拦截器
  • 专题三_穷举vs暴搜vs深搜vs回溯vs剪枝_全排列
  • 【王树森搜索引擎技术】概要04:搜索引擎的链路(查询词处理、召回、排序)
  • Linux的软件包管理器
  • 《Effective Java》学习笔记——第1部分 创建对象和销毁对象的最佳实践
  • Redis使用基础
  • TCP如何保证安全可靠?
  • 我国的金融组织体系,还有各大金融机构的分类,金融行业的组织
  • 【Excel】【VBA】Reaction超限点筛选与散点图可视化
  • 【线性代数】基础版本的高斯消元法
  • Keil自动生成Bin文件(2)
  • 2024年度个人成长与技术洞察总结
  • Data Filtering Network 论文阅读和理解