Git 一 檔案內容與其雜湊值

2021-07-29 09:31:40 字數 1462 閱讀 3178

git是乙個很不錯的分布式版本控制系統,它主要維護兩個主要的資料結構:物件庫(object store)索引(index)。這些資料存放在工作目錄根目錄下乙個".git"的隱藏目錄下,如:

其中,索引是臨時的、動態的二進位制檔案,它捕獲專案在某個時刻的整體結構的乙個版本,對於版本庫來說是私有的,並且可以在需要的時候按需求進行建立和修改。

物件庫是核心,包含工作目錄的所有檔案資料資訊和配置資訊,存放在物件庫有如下四種物件型別:

1. 塊(blob)

檔案的每乙個版本表示為乙個blob

2. 目錄樹(tree)

乙個tree代表一層目錄資訊

3. 提交(commit)

乙個commit儲存版本庫中每一次變化的元資料,每個提交物件指向乙個目錄樹物件

4. 標籤(tag)

給乙個提交建立乙個易懂的名字

物件都有名稱,該名稱內容由物件的內容經過sha1得到,它是乙個160位的數,乙個檔案內容不論存放在**,其產生的sha1值一樣,因此,可以跟蹤檔案內容是否發生變化來對應產生sha1值來進行提交。與cvs和svn等版本控制系統不一樣,git追蹤的不是檔案,而是檔案的內容,另外,當檔案從乙個版本更新到下乙個版本時,git是儲存每個檔案的每個版本,而不是檔案的差異,因為git是根據檔案內容計算sha1值的。

經過上面的基本概念,如下是.git目錄下內容:

在objects目錄下就是存放git物件的了:

我們看看objects/00目錄下的內容:

這裡存放了3個雜湊值,現在看看第乙個雜湊值對應的檔案內容(注意,為了提高檔案系統效率,git把雜湊值前2位當做目錄,需要連線起來):

這裡記錄了tree的雜湊值,我們一直按照這個值就可以一路跟著查到對應的檔案的內容,可以通過"git ls-files -s"來檢視所有檔案對應雜湊值。

可使用"git show 《提交的雜湊值》 --pretty=fuller"來檢視指定提交的詳細內容。

可通過"git rev-parse

python(一) 檔案操作

my file open my file.txt w 用法 open 檔名 形式 其中形式有 w write r read.my file.write text 該語句會寫入先前定義好的 text my file.close 關閉檔案 this is my first test.this is th...

一 檔案安全與許可權

檔案 當我們建立乙個檔案的時候,系統儲存了有關該檔案的全部資訊,包括 檔案的位置。檔案型別。檔案長度。哪位使用者擁有該檔案,哪些使用者可以訪問該檔案。i節點。檔案的修改時間。檔案的許可權位。讓我們使用ls l命令,來看乙個典型的檔案 root linux ll total 80 rw r r 1 r...

linux(一)檔案處理命令

一 檔案處理命令 ls 選項 檔案或目錄 選項 a 顯示所有檔案,包括隱藏檔案 l 顯示詳細資訊 d 檢視目錄屬性 h 人性化顯示檔案大小 i 顯示inode 檔案型別 檔案 d 目錄 l 軟連線檔案 u 所有者 g所屬組 o其他人 r 讀 w 寫 x 執行 mkdir 建立目錄 p 遞迴建立目錄 ...