1. 程式人生 > >深入理解Git (一) - 元數據

深入理解Git (一) - 元數據

實現原理 popu 使用 hudson prepare init 事情 鉤子函數 desc

三分鐘教你學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 (一) - 元數據