git使用记录四:.git分析
git使用记录四: .git
查看.git 目录下的文件
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy/.git (GIT_DIR!)
$ ls -al
total 19
drwxr-xr-x 1 soaeon 197121 0 5月 21 21:20 ./
drwxr-xr-x 1 soaeon 197121 0 5月 21 21:01 ../
-rw-r--r-- 1 soaeon 197121 15 5月 21 21:01 COMMIT_EDITMSG
-rw-r--r-- 1 soaeon 197121 130 5月 21 14:18 config
-rw-r--r-- 1 soaeon 197121 73 5月 21 14:18 description
-rw-r--r-- 1 soaeon 197121 175 5月 21 21:20 gitk.cache
-rw-r--r-- 1 soaeon 197121 23 5月 21 14:18 HEAD
drwxr-xr-x 1 soaeon 197121 0 5月 21 14:18 hooks/
-rw-r--r-- 1 soaeon 197121 217 5月 21 21:01 index
drwxr-xr-x 1 soaeon 197121 0 5月 21 14:18 info/
drwxr-xr-x 1 soaeon 197121 0 5月 21 14:35 logs/
drwxr-xr-x 1 soaeon 197121 0 5月 21 21:01 objects/
-rw-r--r-- 1 soaeon 197121 41 5月 21 20:52 ORIG_HEAD
drwxr-xr-x 1 soaeon 197121 0 5月 21 14:18 refs/
HEAD中记录了什么?
查看一下HEAD中的内容:
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy/.git (GIT_DIR!)
$ cat HEAD
ref: refs/heads/master
refs到了 refs/heads/master 文件, 那么我们去找一下 master文件,看看到底是什么鬼, 走起……
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy/.git (GIT_DIR!)
$ cd refs/heads/
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy/.git/refs/heads (GIT_DIR!)
$ ls -al
total 1
drwxr-xr-x 1 soaeon 197121 0 5月 21 21:01 ./
drwxr-xr-x 1 soaeon 197121 0 5月 21 14:18 ../
-rw-r--r-- 1 soaeon 197121 41 5月 21 21:01 master
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy/.git/refs/heads (GIT_DIR!)
$ git cat-file -t master
commit
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy/.git/refs/heads (GIT_DIR!)
$ git cat-file -p master
tree b45764296505a9fa97245d0b0107b2a3b5f46447
parent 980e3beda020a9696626c671badc4f1612f0a1aa
author soaoen <soaeon@163.com> 1558443701 +0800
committer soaoen <soaeon@163.com> 1558443701 +0800
add index.html
从上面的记录中 我们看见 /refs/heads/master记录的是一个commit对象而已, 但是这个commit的内容记录了一次提及哎…… 内容如下
- tree
- parent :父节点
- author
- commiter
- log-info('add index.html')
走, 我们去看看最后的两次提交的历史记录
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy/.git/refs/heads (GIT_DIR!)
$ git log -n 2
commit 32f575d33a6bcf8b834590718594e472e0ff9b4b (HEAD -> master)
Author: soaoen <soaeon@163.com>
Date: Tue May 21 21:01:41 2019 +0800
add index.html
commit 980e3beda020a9696626c671badc4f1612f0a1aa
Author: soaoen <soaeon@163.com>
Date: Tue May 21 21:01:04 2019 +0800
rename readme
哇, 到这里我们可以, 上面master 存放的parent指向了‘rename readme’这个log, 所以 refs/heads/master 执行了最后的一次提交的记录哦
objects 文件夹都存了啥?
切换到object路径下, 查看一下当前的路径吧
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy/.git/objects (GIT_DIR!)
$ pwd
/f/gitstudy/.git/objects
列出objects 下所有的文件夹
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy/.git/objects (GIT_DIR!)
$ ls -al
total 8
drwxr-xr-x 1 soaeon 197121 0 5月 21 21:01 ./
drwxr-xr-x 1 soaeon 197121 0 5月 21 21:20 ../
drwxr-xr-x 1 soaeon 197121 0 5月 21 21:01 23/
drwxr-xr-x 1 soaeon 197121 0 5月 21 21:01 32/
drwxr-xr-x 1 soaeon 197121 0 5月 21 14:35 33/
drwxr-xr-x 1 soaeon 197121 0 5月 21 21:01 98/
drwxr-xr-x 1 soaeon 197121 0 5月 21 21:01 b4/
drwxr-xr-x 1 soaeon 197121 0 5月 21 14:35 e6/
drwxr-xr-x 1 soaeon 197121 0 5月 21 14:35 e8/
drwxr-xr-x 1 soaeon 197121 0 5月 21 14:18 info/
drwxr-xr-x 1 soaeon 197121 0 5月 21 14:18 pack/
来吧, 我们查看一下e8下面存得啥玩意, 先切换到e8文件夹下面
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy/.git/objects (GIT_DIR!)
$ cd e8/
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy/.git/objects/e8 (GIT_DIR!)
$ ls -al
total 5
drwxr-xr-x 1 soaeon 197121 0 5月 21 14:35 ./
drwxr-xr-x 1 soaeon 197121 0 5月 21 21:01 ../
-r--r--r-- 1 soaeon 197121 51 5月 21 14:35 0ad49ace82167de62e498622d70377d913c79e
查看 0ad49 文件内容,使用git cat-file -p e8加上0ad49……, 如下
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy/.git/objects/e8 (GIT_DIR!)
$ git cat-file -t e80ad49ace82167de62e498622d70377d913c79e
tree
soaeon@DESKTOP-FUJJTHR MINGW64 /f/gitstudy/.git/objects/e8 (GIT_DIR!)
$ git cat-file -p e80ad49ace82167de62e498622d70377d913c79e
100644 blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 readme
_ , 发现 这个的类型是tree, 但是里面存了一个blob 呀, 这都啥玩意?
这篇使用记录中我们发现存储的类型有commit, tree, blob 这三个都是啥, 又是啥关系呀, 下一篇使用记录,我们接着去探索,去发现咯
git使用记录四:.git分析的更多相关文章
- linux下git使用记录1 git 提交
linux下git使用记录1 浏览:985 发布日期:2013/08/08 分类:技术分享 在使用github的时候,不可避免的接触到了git,用他来更新项目,做版本控制.这里特别把常用的命令记录 ...
- Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作
上篇博客聊了<Git知识总览(三) 分支的创建.删除.切换.合并以及冲突解决>,本篇博客我们主要来看一下 rebase 变基相关的操作.rebase 操作和 merge 操作最终都可以达到 ...
- 【Git】Git使用记录: 基于git ignore文件将remote上的文件untrack
话不多说直接上步骤: git bash直接干到你的code. 直接敲命令: git rm -r --cached . rm是remove 命令 -r将允许递归删除 -cached只会从索引中删除文件. ...
- 如何搜索 git 提交记录
如何搜索 git 提交记录 git log -p --all -G '可通过正则搜索' --pretty=format:'%ci' # 可跨分支搜索 # -S '通过文本搜索' git branch ...
- 小丁带你走进git的世界四-重写历史记录
一.git对象文件创建 开篇先补充一个知识点,就是比如我建立一个文件之后,使用git add就会生成一个git对象,但是git对象生成后可以在.git/objects里面对应,首先我们来初始化一个仓库 ...
- git 笔记记录
分布式版本控制系统Git 是一套内容寻址文件系统,从核心上来看不过是简单地存储键值对.一: git 本地clone 一个仓库 1. 直接clone一个仓库: $: git clon ...
- git学习------>如何修改git已提交的记录中的Author和Email?
一.背景 最近搭建好GitLab后,准备陆陆续续的将之前在SVN仓库中保存的代码迁移到GitLab上,昨天顺利将三个Android组件的代码迁移到GitLab后,其他同事发现迁移是成功了,但是pull ...
- 我所记录的git命令(非常实用)
一.前言 记录一下工作中常用到的git命令,只是简单的笔记,欢迎大家交流... [ 顺便问下园友们,怎么感觉博客园发布的博客搜索有时都搜不到,后台编辑能填的都填写了,还是觉得搜索排名不高? 相同的标题 ...
- Git使用记录(二)
一)git init 初始化仓库 要使用Git进行版本管理,必须先初始化仓库,请先建立一个目录并初始化仓库 mkdir gittest cd gittest git init 初始化成功以后会在当前目 ...
随机推荐
- DP50题(转)
转自https://www.luogu.org/blog/cccx2016/dp50-ti-ti-hao dp50题: poj1014 poj1015 poj1018 poj1036 poj1038 ...
- XSS——跨站脚本攻击
跨站点脚本攻击:通过对网页注入恶意脚本,成功地被浏览器执行,来达到攻击的目的. 一.XSS攻击类型与原理1. 反射型XSS攻击非持久性攻击,黑客使用社交性的交互技巧诱导用户点击访问目标服务器的链接,但 ...
- elasticsearch 基础 —— URI搜索
URI搜索 可以通过提供请求参数使用URI来执行搜索请求.使用此模式执行搜索时,并非所有搜索选项都会暴露.这是一个例子: GET twitter/_search?q=user:kimchy 示例响应: ...
- Failed to load C:\ProgramFilesTwo\Android\sdk\build-tools\27.0.3\lib\dx.jar
Eclipse遇到如下错误: Failed to load C:\ProgramFilesTwo\Android\sdk\build-tools\27.0.3\lib\dx.jar 原因: eclip ...
- 灰常牛逼的命令行备忘录 navi
灰常牛逼的命令行备忘录 navi 1. navi命令简介 1.1 navi命令简介 命令行是非常高效的工具,但一个很常见的现象是,很多命令行过一段时间就容易忘.举个栗子,如果我们常用 git 命令行管 ...
- Object.assign()遇到的问题分析
概念 Object.assign() 方法可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象.语法如下: Object.assign(target, ...sources) Obj ...
- umount device is busy 的处理方法
[root@web2-server yum.repos.d]# umount /mnt/cdrom/ umount: /mnt/cdrom: device is busy. (In some case ...
- spark 计算结果写入mysql 案例及常见问题解决
package com.jxd import org.apache.spark.SparkContextimport org.apache.spark.SparkConfimport java.sql ...
- Web核心之最简单最简单最简单的登录页面
需求分析: 在登录页面提交用户名和密码 在Servlet中接收提交的参数,封装为User对象,然后调用DAO中的方法进行登录验证 在DAO中进行数据库查询操作,根据参数判断是否有对象的用户存在 在Se ...
- 最强CP!阿里云联手支付宝小程序如何助力双11?
作为首次“全面上云”的双11,阿里云征服了每秒订单峰值54.4万笔的世界新记录.正是在阿里云的保驾护航下,即使访问量是平时的5到6倍,小程序也鲜少出现卡顿或者宕机的现象,“依靠阿里云,我们整个天猫双1 ...