Git系列:Refs与Reflog

2024-04-28 17:20
文章标签 系列 git refs reflog

本文主要是介绍Git系列:Refs与Reflog,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


在这里插入图片描述
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
在这里插入图片描述

  • 推荐:「stormsha的主页」👈,持续学习,不断总结,共同进步,为了踏实,做好当下事儿~
  • 专栏导航
    • Python面试合集系列:Python面试题合集,剑指大厂
    • GO基础学习笔记系列:记录博主学习GO语言的笔记,该笔记专栏尽量写的试用所有入门GO语言的初学者
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 运维系列:总结好用的命令,高效开发
    • 算法与数据结构系列:总结数据结构和算法,不同类型针对性训练,提升编程思维

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

💖The Start💖点点关注,收藏不迷路💖

📒文章目录

  • Git系列之Refs与Reflog
    • 哈希
    • 引用(Refs)
    • 规范引用(refs)
    • Packed Refs
    • 特殊的引用(Refs)
    • Refspecs
    • 相对引用
    • Reflog
    • 总结


在这里插入图片描述

Git系列之Refs与Reflog

Git是一个功能强大的版本控制系统,它使用哈希、引用(Refs)、规范引用(refs)、Packed Refs、特殊的引用(Refs)、Refspecs、相对引用和Reflog等概念来管理和操作仓库中的提交。本文将从这些方面详细讲解Git中Refs和Reflog的使用,并在适当的位置给出操作代码示例。

在这里插入图片描述

哈希

哈希是Git中表示提交的唯一标识符。它是通过SHA-1算法计算得出的一串40位的十六进制字符串,用于唯一标识一个提交。哈希值是根据提交的内容计算得出的,包括提交的作者、日期、消息以及对文件的修改等信息。通过哈希值,可以找到对应的提交。

例如,执行以下命令可以查看仓库中最近的提交的哈希值:

git log -1 --pretty=format:"%H"

输出结果类似于:0c708fdec272bc4446c6cabea4f0022c2b616eba

引用(Refs)

引用是Git中对提交的间接引用方式,它是对用户更友好的commit哈希别名。引用可以看作是分支和标签的内部机制。在Git中,引用被存储为一个普通的文本文件,位于.git/refs路径下。通过引用,用户可以更方便地操作和切换不同的提交。

例如,要查看当前分支的引用,可以执行以下命令:

cat .git/refs/heads/<branch-name>

其中,<branch-name>是分支的名称。

规范引用(refs)

规范引用是Git中对引用的全名表示。在向Git命令传递引用时,可以使用规范引用的简称或全名。规范引用的全名可以避免歧义,例如当分支和标签同名时,使用全名可以避免混淆。

例如,要使用规范引用的全名来检出一个分支,可以执行以下命令:

git checkout refs/heads/<branch-name>

Packed Refs

对于大型仓库,Git会周期性地执行垃圾回收机制,将引用打包到一个单独的文件中,以提高性能。这个文件被称为Packed Refs,它包含了所有分支和标签的哈希值。

要查看Packed Refs文件的内容,可以执行以下命令:

cat .git/packed-refs

特殊的引用(Refs)

在Git中,有一些特殊的引用文件放置在.git目录的根目录下,如HEADFETCH_HEADORIG_HEADMERGE_HEADCHERRY_PICK_HEAD等。这些引用文件用于表示当前检出的提交/分支、最近一次检出的远程仓库分支等信息。

例如,要查看当前检出的提交/分支,可以执行以下命令:

cat .git/HEAD

Refspecs

Refspecs是Git中表示本地分支和远程分支之间映射关系的规范。通过Refspecs,可以实现对远程分支的管理和操作,以及配置高级的git pushgit fetch行为。

例如,要将本地分支feature推送到远程仓库的qa-feature分支上,可以执行以下命令:

git push origin feature:refs/heads/qa-feature

相对引用

相对引用是Git中对提交的一种相对定位方式。通过使用相对引用,可以方便地找到相对于当前提交的父提交或祖先提交。

在这里插入图片描述

例如,要查看当前提交的父提交,可以执行以下命令:

git show HEAD^

要查看当前提交的祖父提交,可以执行以下命令:

git show HEAD^^

Reflog

Reflog是Git的保险装置,它记录了几乎所有在仓库中的修改,无论这些修改是否被提交。通过Reflog,可以恢复丢失的提交或分支。

要查看Reflog的内容,可以执行以下命令:

git reflog

总结

通过本文的讲解,相信读者已经对Git中的Refs和Reflog有了更深入的了解。这些概念在Git的使用中非常重要,掌握它们可以帮助我们更好地管理和操作仓库中的提交。在实际开发中,灵活运用这些概念和操作代码示例,可以提高开发效率和版本控制的准确性。


❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏、分享下吧,非常感谢!👍 👍 👍

🔥🔥🔥道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

💖The End💖点点关注,收藏不迷路💖

这篇关于Git系列:Refs与Reflog的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/943812

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个