三分钟教你学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. 步步为营-54-DOM

    说明:DOM document object model 文档对象模型.将所有的标记加载到内存中,以树形结构处理 1.1 使用JavaScript操作DOM,主要包括两个部分 Browser对象:BO ...

  2. 《剑指offer》-判断平衡二叉树

    题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 考察平衡树的概念和递归的使用.平衡树是指,树中的每个节点的左右子树的高度差小于等于1. class Solution { public: bo ...

  3. ubuntu基本用法

    • Linux上vim编辑器缩进的设置 • 从零开始UNIX环境高级编程(0):Linux下运行第一个程序

  4. 【转】角落的开发工具集之Vs(Visual Studio)2017插件推荐

    因为最近录制视频的缘故,很多朋友都在QQ群留言,或者微信公众号私信我,问我一些工具和一些插件啊,怎么使用的啊?那么今天我忙里偷闲整理一下清单,然后在这里面公布出来. Visual Studio 201 ...

  5. ef 数据库连接字符串加密

    public testContext() : base(GetConnection(), true) { } public static DbConnection GetConnection() { ...

  6. python3 使用SimpleHTTPServer搭建web服务器

    刚刚萌发了一个念头,要用python来做个web服务器,秀出自己的网页.于是,开始了我的搭建web服务器之旅. 首先,如果不想使用Apache.IIS,那就需要一个HTTP服务,而python自带了一 ...

  7. asp.net core配置文件

    读取配置文件 asp.net core使用appsettings.json代替传统.net framework的web.config中的<appSettings>节点.它的数据格式变成了j ...

  8. 新建asp.net core项目

    开发环境:Windows Server R2 2008 开发工具:Microsoft Visual Studio 2017 新建asp.net core项目 创建web项目时,务必选择“ASP.NET ...

  9. Nginx 部署、反向代理配置、负载均衡

    Nginx 部署.反向代理配置.负载均衡 最近我们的angular项目部署,我们采用的的是Nginx,下面对Nginx做一个简单的介绍. 为什么选择Nginx 轻:相比于Apache,同样的web服务 ...

  10. 003.HAProxy ACL规则的智能负载均衡

    一 简介 HAProxy可以工作在第七层模型,可通过ACL规则实现基于HAProxy的智能负载均衡系统,HAProxy通过ACL规则完成以下两种主要功能: 通过ACL规则检查客户端请求是否合法,如果符 ...