三分钟教你学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. 【转】js中的事件委托或是事件代理详解

    起因: 1.这是前端面试的经典题型,要去找工作的小伙伴看看还是有帮助的: 2.其实我一直都没弄明白,写这个一是为了备忘,二是给其他的知其然不知其所以然的小伙伴们以参考: 概述: 那什么叫事件委托呢?它 ...

  2. CCF2014032窗口(C语言)

    问题描述 在某图形操作系统中,有 N 个窗口,每个窗口都是一个两边与坐标轴分别平行的矩形区域.窗口的边界上的点也属于该窗口.窗口之间有层次的区别,在多于一个窗口重叠的区域里,只会显示位于顶层的窗口里的 ...

  3. python易错题之作用域

    name = "lzl" def f1(): print(name) def f2(): name = "eric" f1() f2() //结果为 lzl 记 ...

  4. cf1061c 普通dp题

    题解见https://blog.csdn.net/godleaf/article/details/84402128 这一类dp题是可以压缩掉一维空间的,本题枚举a1到an,枚举到ai时枚举ai的每个约 ...

  5. ngrinder的简介与基本使用(转载:https://www.jianshu.com/p/f336180806cc)

    nGrinder简介 nGrinder是基于Grinder开源项目,由NHN公司的开发团队进行了重新设计和完善.nGrinder是一款非常易用,有简洁友好的用户界面和controller-agent分 ...

  6. Python实现进度条功能

    Python实现进度条功能 import sys, time def progress(percent, width=50): # 设置进度条的宽度 if percent >= 100: # 当 ...

  7. SpringBank 开发日志 Mybatis 使用redis 作为二级缓存时,无法通过cacheEnabled=false 将其关闭

    <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...

  8. POJ 2976 3111(二分-最大化平均值)

    POJ 2976 题意 给n组数据ai,bi,定义累计平均值为: 现给出一个整数k,要求从这n个数中去掉k个数后,最大累计平均值能有多大?(四舍五入到整数) 思路 取n−k个数,使得累计平均值最大. ...

  9. 键盘键码Key Code

    来源:https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes Key Code backspace 8 t ...

  10. How to uninstall Maya on a Mac

    How to uninstall Maya on a Mac Products and versions covered  By:  Support Jun 15 2018 SHARE ADD TO ...