返回顶部
首页 > 资讯 > 精选 >如何分析git对象及多层目录
  • 904
分享到

如何分析git对象及多层目录

2023-06-28 16:06:42 904人浏览 安东尼
摘要

本篇文章给大家分享的是有关如何分析git对象及多层目录,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。对于git对象的理解和实例分析[root@localhost ~]#&nbs

本篇文章给大家分享的是有关如何分析git对象及多层目录,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

对于git对象的理解和实例分析

[root@localhost ~]# cd /git/[root@localhost git]# mkdir object[root@localhost object]# vim main.c

Hello wnayan!

[root@localhost object]# git hash-object main.c   //计算main.c的哈希值

d32fe487dc38cbfc7fe051a5d6dbae01551d8dbd

[root@localhost object]# git init

Initialized empty Git repository in /git/object/.git/

[root@localhost object]# git add .

以下这个文件(blob)就是保存mia.c内容的文件

[root@localhost object]# ll .git/objects/d3/

total 8

-r–r–r– 1 root root 30 Nov 27 04:02 2fe487dc38cbfc7fe051a5d6dbae01551d8dbd

[root@localhost object]# git commit -m “1st commint”[master (root-commit) da97249] 1st commint

1 files changed, 1 insertions(+), 0 deletions(-)

create mode 100644 main.c

[root@localhost object]# find .git/objects/ -type f  //列出文件夹下的普通文件

.git/objects/ae/eedc3b20507db9600f7f72431557fcf9303252

.git/objects/d3/2fe487dc38cbfc7fe051a5d6dbae01551d8dbd

.git/objects/da/97249d3649b1770b5cec8fa515833ea596f26f

[root@localhost object]# git show d32f  //查看blob的内容,就是main.c的一样的内容

Hello wnayan!

[root@localhost object]# git cat-file -t aeeedc   //这三句是查看object的类型

tree

[root@localhost object]# git cat-file -t da97

commit

[root@localhost object]# git cat-file -t d32f

blob

以上三种对象中tree保存文件的名字,blob保存文件的内容,这种结构有利于两个内容相同但是名字不同的文件的保存(tree保存两个名字,blob保存一份内容就可以了)

[root@localhost object]# git ls-tree aeee   //列出tree和blob的对应关系

100644 blob d32fe487dc38cbfc7fe051a5d6dbae01551d8dbd      main.c

[root@localhost object]# git show -s –pretty=raw da97  //查看commit的内容,关系很明确

commit da97249d3649b1770b5cec8fa515833ea596f26f

tree aeeedc3b20507db9600f7f72431557fcf9303252

author ethnicitybeta1322337880 +0800

committer ethnicitybeta1322337880 +0800

1st commint

多层目录的实例

[root@localhost /]# mkdir -p /git/wanyan[root@localhost /]# cd /git/wanyan/[root@localhost wanyan]# cat README

just test!

[root@localhost wanyan]# cat lib/comment

include

[root@localhost wanyan]# cat lib/include/main.c

main

[root@localhost wanyan]# git init

Initialized empty Git repository in /git/wanyan/.git/

[root@localhost wanyan]# git add .[root@localhost wanyan]# git commit -m “1st version”[master (root-commit) 206ecf2] 1st version

3 files changed, 3 insertions(+), 0 deletions(-)

create mode 100644 README

create mode 100644 lib/comment

create mode 100644 lib/include/main.c

[root@localhost wanyan]# find .git/objects/ -type f  //查看生成的对象

.git/objects/03/e86fb4437c4153cec24aa4021dca582abc0558

.git/objects/56/2f7710be64f9309a9fe6aa529753953Dbe7e47

.git/objects/20/6ecf269d0f540995d88d6be825fecb09b5d3eb

.git/objects/8f/006adb88a619f20442a9eb3148cff31691eaf0

.git/objects/ba/2906d0666cf726c7eaadd2cd3db615dedfdf3a

.git/objects/90/48a2fd8c21a70a2dffcf80c819eee2fb491a31

.git/objects/a1/a869c8c840478164594a788ae5ce38dc0ee6da

[root@localhost wanyan]# git cat-file -t 03e8  //可以通过这个命令依次查看对象的类型

tree

[root@localhost wanyan]# ll .git/HEAD

-rw-r–r– 1 root root 23 Nov 27 04:23 .git/HEAD  //当前使用的commit是master

[root@localhost wanyan]# cat .git/HEAD

ref: refs/heads/master

[root@localhost wanyan]# cat .git/refs/heads/master

206ecf269d0f540995d88d6be825fecb09b5d3eb

[root@localhost wanyan]# git cat-file -t 206e

commit

接下来就是修改任意的文件,来生成第多个版本的测试

[root@localhost wanyan]# cd lib/[root@localhost lib]# cat comment

include

change

[root@localhost wanyan]# git commit -a -m “2nd commit”  //这个命令是那两个命令的综合[master a7772df] 2nd commit

1 files changed, 1 insertions(+), 0 deletions(-)

[root@localhost wanyan]# find .git/objects/ -type f   //可以发现对象明显的增加

.git/objects/5f/eaaa33f5f3b3bc5fae0b750b2a5ebdc74b0a27

.git/objects/03/e86fb4437c4153cec24aa4021dca582abc0558

.git/objects/56/2f7710be64f9309a9fe6aa529753953dbe7e47

.git/objects/57/440fcc9bc816076d418a2da304a2498b928bae

.git/objects/20/6ecf269d0f540995d88d6be825fecb09b5d3eb

.git/objects/8f/006adb88a619f20442a9eb3148cff31691eaf0

.git/objects/ba/2906d0666cf726c7eaadd2cd3db615dedfdf3a

.git/objects/90/48a2fd8c21a70a2dffcf80c819eee2fb491a31

.git/objects/a1/a869c8c840478164594a788ae5ce38dc0ee6da

.git/objects/a7/772df6deb98005cf5ee21ae3ea863296677923

.git/objects/2c/f3d62adf771c30fa8062ce2c491d14486ea5ee

接下来这个步骤就是来打tag,tag分为轻量级的和全面包含的

首先是轻量级的tag这个tag虽然是对象,但是并不在对象目录里显示(object目录)

[root@localhost wanyan]# git tag v1.0[root@localhost wanyan]# ll .git/refs/tags/

total 8

-rw-r–r– 1 root root 41 Nov 27 04:50 v1.0

[root@localhost wanyan]# cat .git/refs/tags/v1.0   //可以发现内容是commit呀

a7772df6deb98005cf5ee21ae3ea863296677923

[root@localhost wanyan]# git cat-file -t a777

commit

然后是全面包含的tag,目录里显示(object目录)

[root@localhost wanyan]# git tag -a stable1.0 -m “1st stable”[root@localhost wanyan]# find .git/objects/ -type f

.git/objects/5f/eaaa33f5f3b3bc5fae0b750b2a5ebdc74b0a27

.git/objects/03/e86fb4437c4153cec24aa4021dca582abc0558

.git/objects/56/2f7710be64f9309a9fe6aa529753953dbe7e47

.git/objects/57/440fcc9bc816076d418a2da304a2498b928bae

.git/objects/20/6ecf269d0f540995d88d6be825fecb09b5d3eb

.git/objects/8f/006adb88a619f20442a9eb3148cff31691eaf0

.git/objects/ba/2906d0666cf726c7eaadd2cd3db615dedfdf3a

.git/objects/90/48a2fd8c21a70a2dffcf80c819eee2fb491a31

.git/objects/a1/a869c8c840478164594a788ae5ce38dc0ee6da

.git/objects/a7/772df6deb98005cf5ee21ae3ea863296677923

.git/objects/8a/26be084ddce5e8178ca91def21e0c8f7a0945e

.git/objects/2c/f3d62adf771c30fa8062ce2c491d14486ea5ee

[root@localhost wanyan]# git cat-file -t 8a26

Tag

接下来演示tag的使用

[root@localhost wanyan]# vi README   //修改一下

just test!

another hang!

[root@localhost wanyan]# git commit -a -m “3rd commit”[master a08fc01] 3rd commit

1 files changed, 1 insertions(+), 0 deletions(-)

[root@localhost wanyan]# cat README

just test!

another hang!

下边的操作演示的是把tag那个状态(修改之前),那个打包出去

[root@localhost wanyan]# git arcHive –fORMat=tar –prefix=wanyan/ v1.0 | gzip > /tmp/wanyan.tar.gz[root@localhost wanyan]# cd /tmp/[root@localhost tmp]# tar zxvf wanyan.tar.gz

wanyan/

wanyan/README

wanyan/lib/

wanyan/lib/comment

wanyan/lib/include/

wanyan/lib/include/main.c

[root@localhost tmp]# cd wanyan[root@localhost wanyan]# cat README   //是不是发现又是tag那个状态的文件

just test!

以上就是如何分析git对象及多层目录,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: 如何分析git对象及多层目录

本文链接: https://lsjlt.com/news/320525.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何分析git对象及多层目录
    本篇文章给大家分享的是有关如何分析git对象及多层目录,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。对于git对象的理解和实例分析[root@localhost ~]#&nbs...
    99+
    2023-06-28
  • python如何判定文件目录是否存在及创建多层目录
    这篇文章主要介绍了python如何判定文件目录是否存在及创建多层目录的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python如何判定文件目录是否存在及创建多层目录文章都会有所收获,下面我们一起来看看吧。下面将...
    99+
    2023-07-02
  • 如何对command对象属性及其方法进行分析
    今天给大家介绍一下如何对command对象属性及其方法进行分析。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。但是我个人认为,在你想转向command对象时,请...
    99+
    2023-06-17
  • 如何理解JavaScript预解析及对象
    本篇文章为大家展示了如何理解JavaScript预解析及对象,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、预解析1、变量预解析和函数预解析JavaScript 代码是由浏览器中的 JavaScr...
    99+
    2023-06-25
  • vue如何利用v-for嵌套输出多层对象
    小编给大家分享一下vue如何利用v-for嵌套输出多层对象,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!如下所示:specifications:[  {   ...
    99+
    2024-04-02
  • 如何分析Linux文件与目录管理
    本篇文章为大家展示了如何分析Linux文件与目录管理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。学习 Linux,不仅限于学习各种命令,了解整个 Linux 文件系统的目录结构以及各个目录的功能同...
    99+
    2023-06-28
  • 如何进行ADO MD对象模型的分析
    这期内容当中小编将会给大家带来有关如何进行ADO MD对象模型的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。用 Description 属性获取简短的错误描述。显示此属性向用户警告您不能或不想处理的...
    99+
    2023-06-17
  • 如何分析Linux系统中的目录结构
    如何分析Linux系统中的目录结构,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在Linux系统中所有文件和目录都是以“/”节点为基础的树形结构,这和Windows有很大的...
    99+
    2023-06-28
  • 分布式对象存储方案,如何实现日志记录?
    随着云计算和大数据时代的到来,分布式对象存储方案越来越受到关注。在这个方案中,日志记录是非常重要的一项功能。本文将介绍分布式对象存储方案中日志记录的实现方法,并且演示代码。 一、什么是分布式对象存储方案? 分布式对象存储方案是指通过多台服...
    99+
    2023-07-28
    日志 分布式 对象
  • 源码分析系列之json_encode()如何转化一个对象
    目录初步测试JsonSerializable源码分析分析Demojson_encode()如何转化一个对象? 使用 json_encode() 将数组 ...
    99+
    2024-04-02
  • 如何用JVM源码分析Java对象的创建过程
    这篇文章将为大家详细讲解有关如何用JVM源码分析Java对象的创建过程,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。基于HotSpot实现对Java对象的创建过程进行深入分析。定义两个简单的...
    99+
    2023-06-17
  • 如何进行java面向对象编程原理的分析
    这期内容当中小编将会给大家带来有关如何进行java面向对象编程原理的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java 的核心是面向对象编程。事实上,所有的Java 程序都是面向对象的,你别无选择...
    99+
    2023-06-03
  • spring是如何注入对象的和bean创建过程分析
    首先需要知道一个大致实现● 这个注入过程肯定是在 BeanPostProcessor 中实现的●spring 是在 beanFactory.getBean 进行 bean 实例化的,即懒加载● 根据第二条,也就是说在 getBean 的时候...
    99+
    2019-05-21
    java教程 spring 注入对象 bean
  • 如何分析Linux系统目录和文件权限的区别
    如何分析Linux系统目录和文件权限的区别,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。文件和目录的权限表面看很简单,但真正弄懂还是得花点心思。文件权限比较简单,但有几点也...
    99+
    2023-06-28
  • 如何进行nGrinder原理分析及性能工具对比
    这篇文章的内容主要围绕如何进行nGrinder原理分析及性能工具对比进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!在介绍nGrinder之前,有必要...
    99+
    2023-06-05
  • 如何利用VisualVM对高并发项目进行性能分析
    如何利用VisualVM对高并发项目进行性能分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前面在学习JVM的知识的时候,一般都需要利用相关参数进行分析,而分析一般都需要用到...
    99+
    2023-06-16
  • 什么是PHP API对象和Shell,以及如何在项目中使用它们?
    PHP是一种广泛应用的开源脚本语言,由于其易学易用、灵活性强等优点,成为了Web开发的首选语言。PHP API对象和Shell是PHP语言中的两个重要概念,它们可以帮助开发者更加便捷地操作服务器和执行命令。本文将详细介绍PHP API对象和...
    99+
    2023-08-12
    api 对象 shell
  • 如何对网站的SEO优化进行多角度分析
    这篇文章主要介绍如何对网站的SEO优化进行多角度分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  在进行seo优化的过程中,我们还要对各种情况都进行合理的分析,真正的去认识到整个网站的一些情况,这样在今后优化过程...
    99+
    2023-06-10
  • Python 对象和 NumPy:如何在数据分析中发挥重要作用?
    Python 是一种功能强大的编程语言,其使用范围广泛,包括数据分析、人工智能、Web 开发等领域。NumPy 是 Python 中的一种数据处理库,它提供了高效的多维数组操作以及用于科学计算的工具。本文将介绍 Python 对象和 Nu...
    99+
    2023-07-06
    对象 apache numy
  • 如何进行Linux设备树传递及Kernel对设备树分析
    如何进行Linux设备树传递及Kernel对设备树分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作