标签:sam height 工作区 git对象 hook config sim tag pop
三分钟教你学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
标签:sam height 工作区 git对象 hook config sim tag pop
原文地址:http://www.cnblogs.com/mfmdaoyou/p/7397045.html