git資料夾利用原理

2021-09-16 21:31:55 字數 1078 閱讀 9473

這裡我們是在github上面做了乙個簡單的git庫。檔案就是乙個readme.md。

這裡我們對應的檔案就是.git/logs/head,這裡就是乙個log檔案。

使用sublime開啟之後。

這裡就是乙個hash值。

使用 git cat-file -t命令。(git cat-file 提供倉庫中物件實體的型別、大小和內容的資訊,-t就是顯示物件的型別)

然後使用git cat-file -p(-p是根據物件的型別顯示其內容)

這裡上面有乙個hash值,就是對應的具體檔案

繼續git cat-file -t,git cat-file -p

這裡的型別就是tree,然後檔案內容就是readme.md

然後繼續git cat-file -t,git cat-file -p

-t是型別,-p是內容,這樣就可以拿到具體的資料了。

git是一套內容定址檔案系統。

git採用hashtable的方式進行尋找。

這裡使用的key就是檔案(頭+內容)的雜湊值,value就是經過壓縮後的檔案內容

blob

tree

commit

blob物件可以儲存所有的檔案型別。

tree物件是用來組織blob物件的一種資料型別。樹節點

父節點key = sha1(file_header + file_content)

value = zlib(file_content)

40位的sha-1校驗和,將該校驗和的前2位作為object目錄中的子目錄的名稱,後38位作為子目錄中的檔名

利用遞迴刪除資料夾(資料夾中套資料夾)

刪除目錄 bool deldir const ansistring p if p.isempty p.length 4 return false 引數必須大於3,即不能為磁碟根目錄或空白 int len p.length char path p.c str ansistring dir ansist...

Git筆記 新增檔案,資料夾,空資料夾

git status 檢視那些檔案被修改,那些檔案待提交 git status on branch develop your branch is up to date with origin develop nothing to commit,working directory clean表示當前沒...

git上傳資料夾

前提是設定好ssh keys 遠端倉庫名 1 進入要上傳的專案資料夾,使用init命令將當前目錄初始化為git倉庫git init 2.將工作區的所有 新增到暫存區git add git add.是新增本目錄所有檔案包括資料夾 3.將暫存區的檔案提取到倉庫git commit m test 4.本地...