三分鐘教你學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所在的目錄就是工作區的根目錄。
深入理解Git 一 元資料
三分鐘教你學git僅僅是教我們會用git了,但是內部的一些實現原理假設我們也知道一些的話會使我們使用起來更加順手。這個系列就是在你用了git一段時間之後,並想繼續到git的內部看一下到底而準備的。git倉庫是依據什麼知道倉庫的元資訊呢?我們首先git init,git會在資料夾下建立乙個.git的隱...
元資料 and 元資料標準
一般銀行內的系統建設環境分為三個 開發環境 測試環境與生產環境,每乙個系統建設的週期都需要經過前兩個環境才能正式進入生產環境。然而在系統的設計 開發 測試 上線過程中,無論是需求變更還是bug修改都避免不了資料模型也就是元資料的改動。大到庫表結構重新設計,小到乙個字段型別的變更,都可能對程式造成影響...
mysql 元資料 MySQL 元資料
mysql 元資料 你可能想知道mysql以下三種資訊 查詢結果資訊 select,update 或 delete語句影響的記錄數。資料庫和資料表的資訊 包含了資料庫及資料表的結構資訊。mysql伺服器資訊 包含了資料庫伺服器的當前狀態,版本號等。在mysql的命令提示符中,我們可以很容易的獲取以上...