标签:
三分钟教你学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
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/hongchangfirst/article/details/45332917