三分鐘教你學git僅僅是教我們會用git了,但是內部的一些實現原理假設我們也知道一些的話會使我們使用起來更加順手。這個系列就是在你用了git一段時間之後,並想繼續到git的內部看一下到底而準備的。
git倉庫是依據什麼知道倉庫的元資訊呢?
我們首先git init,git會在資料夾下建立乙個.git的隱藏資料夾,這個資料夾裡儲存了關於這個倉庫的全部元資料。git物件就存在其下的objects資料夾內。所以有必要看一下這裡邊都還儲存了什麼東西:
首先.git資料夾下有五個資料夾和三個檔案:
1 branches
2 hooks
裡邊包括全部的鉤子函式。同意你自己定義一些git預先配置好的鉤子,能夠做一些自己自己定義的事情。比方當有修改的時候觸發hudson進行構建。commit的時候加上一些每乙個commit都須要有的資訊,比方code review編號之類的。
- post-update.sample
- pre-commit.sample
- pre-push.sample
- update.sample
- commit-msg.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所在的資料夾就是工作區的根資料夾。
原文:hongchangfirst
hongchangfirst的主頁:
python 元類 python元類深入理解
1.python 中的類 在python中,類也是乙個物件,只不過這個物件擁有生成例項的能力,我們一般使用class 來定義乙個類,在python直譯器執行到這個地方的時候會自動建立出這個物件,python也為我們提供了手動建立類的方法,type type 這個方法對我們來說並不陌生,我們所熟知的用...
深入理解REST(一)
1.什麼是 rest rest是representational state transfer的縮寫,於 r.fielding 的一篇博士 architectural styles and the design of network based software architectures rest...
深入理解DataAdapter(一)
ado.net有兩個核心元件 基於連線的data provider元件以及基於非連線的dataset元件。基於連線的data provider元件常用於實時地從資料庫中檢索資料。而基於非連線的dataset,似乎與資料庫沒有直接聯絡,僅僅用於在本地記憶體中儲存data provider提供的資料表或...