三分钟教你学Git仅仅是教我们会用Git了,但是内部的一些实现原理假设我们也知道一些的话会使我们使用起来更加顺手。这个系列就是在你用了Git一段时间之后,并想继续到Git的内部看一下到底而准备的。

Git仓库是依据什么知道仓库的元信息呢?我们首先git init,git会在文件夹下创建一个.git的隐藏文件夹,这个文件夹里存储了关于这个仓库的全部元数据。Git对象就存在其下的objects文件夹内。所以有必要看一下这里边都还存储了什么东西:

首先.git文件夹下有五个文件夹和三个文件:

1 branches

2 hooks

里边包括全部的钩子函数。同意你自己定义一些Git预先配置好的钩子,能够做一些自己自己定义的事情。比方当有修改的时候触发hudson进行构建。commit的时候加上一些每一个commit都须要有的信息,比方code review编号之类的。

- applypatch-msg.sample

- post-update.sample

- pre-commit.sample

- pre-push.sample

- update.sample

- commit-msg.sample

- pre-applypatch.sample

- prepare-commit-msg.sample

- pre-rebase.sample

3 info

这个文件夹里边存储了exclude文件,能够使Git忽略掉一些内容。是对.gitignore功能的补充。

4 objects

这个文件夹存储了上节我们提到的四种Git对象。

5 refs

- heads 本地哪个branch的哪个commit。

- remotes

-- origin 存储当前head的远程分支指向,这些信息在本地是仅仅读的,在本地能够checkout出来这些文件。可是不像heads会进行更新操作。

三个文件

6 config

这个文件也是相当的重要。存储了关于本地仓库配置信息,各个branch的一些信息等。

7 description

8 HEAD

存储当前head的实际指向,比方refs/heads/master

另外另一个关键的文件index。存储stage的信息。

那么有一个问题是:Git怎样定位版本号库?

git会在当前文件夹中依次向上递归查找.git文件夹。直到找到。那么找到的.git文件夹就是工作区相应的版本号库,.git所在的文件夹就是工作区的根文件夹。

原文:http://blog.csdn.net/hongchangfirst/article/details/45332917

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst

深入理解Git (一) - 元数据的更多相关文章

  1. 全面理解Git

    前言 人生贵知心,定交无暮早. 原文博客地址:Git命令总结 知乎专栏&&简书专题:前端进击者(知乎)  前端进击者(简书) 正文 1.Git简介 Git的诞生确实是一个有趣的故事,我 ...

  2. 理解git的分支原理,更好地使用git

    文章内容转载于git-scm. 部分内容涉嫌枯燥 一.git分支概念 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作.在很多版本控 ...

  3. 深入理解git,从研究git目录开始

    转发学习的啦. 似乎很少有人在读某个git快速教程的时候会说:“这个关于git的快速教程太酷了!读完了用起git来超级舒服,并且我一点也不怕自己会破坏什么东西.” 对git的初学者来说,刚接触git时 ...

  4. 真正理解 git fetch, git pull 以及 FETCH_HEAD【转】

    转自:http://www.cnblogs.com/ToDoToTry/p/4095626.html 真正理解 git fetch, git pull 要讲清楚git fetch,git pull,必 ...

  5. 理解Git的工作流程(转)

    英文原文:Understanding the Git Workflow 如果你不理解Git的设计动机,那你就会处处碰壁.知道足够多的命令和参数后,你就会强行让Git按你想的来工作,而不是按Git自己的 ...

  6. 理解git经常使用命令原理

    git不同于类似SVN这样的版本号管理系统,尽管熟悉经常使用的操作就能够满足大部分需求,但为了在遇到麻烦时不至于靠蛮力去尝试,了解git的原理还是非常有必要. 文件 通过git管理的文件版本号信息所有 ...

  7. [转载]理解 Git 分支管理最佳实践

    原文 理解 Git 分支管理最佳实践 Git 分支有哪些 在进行分支管理讲解之前,我们先来对分支进行一个简单的分类,并明确每一类分支的用途. 分支分类 根据生命周期区分 主分支:master,deve ...

  8. 深入理解Git - 一切皆commit

    在对 git 有了基本理解和知道常规操作之后,如何对 git 的使用有进一步的理解? 一切皆 commit 或许是个不错的理解思路. 本文将从『一切皆 commit 』的角度,通过 git 中常见的名 ...

  9. 真正理解 git fetch, git pull 以及 FETCH_HEAD

    真正理解 git fetch, git pull 要讲清楚git fetch,git pull,必须要附加讲清楚git remote,git merge .远程repo, branch . commi ...

  10. 深入理解Git - Git底层对象

    前篇: 深入理解Git - 一切皆commit 如何从稍微底层一点的角度,从底层实现理解一切皆commit ? 配合希沃白板课件食用,效果更佳: [希沃白板5]课件分享 : <Git 进阶 - ...

随机推荐

  1. 对以内部 git 仓库为 composer 依赖的 package,加上版本号

    现实问题 之前同事做了一个 composer package,做为公司大量 laravel 项目的通用模块. 但是,在实际使用中,每个项目对改 package 的依赖版本是有所不同的.否则 compo ...

  2. MVC开发中的常见错误-06-"无法在发送 HTTP 标头之后进行重定向。"

    通过监视可以看到: 原来是跳转到登录页面后,登录页面中又发送了一个GeMneuItems的请求,用于加载页面图片

  3. Lucene.Net简单例子-01

    前面已经简单介绍了Lucene.Net,下面来看一个实际的例子 1.1 引用必要的bll文件.这里不再介绍(Lucene.Net  PanGu  PanGu.HightLight  PanGu.Luc ...

  4. #ECMASCRIPT6笔记

    ECMASCRIPT6笔记 来源于http://es6.ruanyifeng.com/#docs/proxy 是我在阅读时做下的笔记,方便以后查阅 Symbol ES5 的对象属性名都是字符串,这容易 ...

  5. Springboot 2.0 - 集成redis

    序 最近在入门SpringBoot,然后在感慨 SpringBoot较于Spring真的方便多时,顺便记录下自己在集成redis时的一些想法. 1.从springboot官网查看redis的依赖包 & ...

  6. VS2010发布、打包安装程序(超全超详细)

    1. 在vs2010 选择“新建项目”→“ 其他项目类型”→“ Visual Studio Installer→“安装项目”: 命名为:Setup1 . 这是在VS2010中将有三个文件夹, 1.“应 ...

  7. 解决asp.net 报错 无法获取所需的权限错误

    asp.net 报错 无法获取所需的权限 无法获取所需的权限.说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 无法获取所 ...

  8. HTTP 的长连接和短连接

    一.什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包.不四次握手),等待 ...

  9. X分钟速成Python3

    参考博客:Python3 从入门到开车  (与以下代码无关) 源代码下载: learnpython3-cn.py Python是由吉多·范罗苏姆(Guido Van Rossum)在90年代早期设计. ...

  10. moodleform -转载于blfshiye

    Form API 表单API 文件夹 1.概述 2.亮点 3.使用方法 4.表单元素 4.1 基本表单元素 4.2 定制表单元素 5.经常使用函数 5.1  add_action_buttons($c ...