2016年8月16日 星期二

[學習] Git(05) 物件 索引

保哥的30天精通Git版控 (05)
http://ithelp.ithome.com.tw/articles/10133653

我所看到的資料夾就是:工作目錄(working directory)
裡面就會有檔案,我可能就會新增/刪除/修改

Git裡面重要的兩個結構:物件、索引

物件是將「檔案內容」取出,透過它產生一組SHA1雜湊值,再依此雜湊值命名的一個檔案。
Git進行版控的過程中,所有要進行控管的目錄和檔案,都會區分「目錄資訊」與「檔案內容」,稱之為tree、blob。
blob物件就是把原本的「檔案內容」當作blob檔案的內容,用上述的雜湊值作為檔名。
tree物件就是資料夾,用指令看tree會發現blob物件會被記錄在裡面。
blob物件就是只有內容的檔案。
這兩個物件都會儲存在「物件儲存區」底下,預設在「儲存庫」.git 下的objects目錄下。

索引是一個經常異動的暫存檔,位於 .git目錄下的index檔案,想要Commit一個版本到Git儲存庫就要先更新索引才能被提交。
更新索引這份二進位檔案要用git指令:
*git add
*git mv
*git rm
*git status
*git commit
*git ls-files

Git索引是一個介於「物件儲存區 object storage」與「工作目錄 working directory」之間的媒介。沒有索引資訊,Git就無法建立版本。

保哥整理:
* 要使用 Git 版本控管,你必須先建立「工作目錄」與「版本庫」。(mkdir, git init)
* 你要先在「工作目錄」進行開發,你可能會建立目錄、建立檔案、修改檔案、刪除檔案、... 等操作。
* 然後當你想提交一個新版本到 Git 的「儲存庫」裡,一定要先更新「索引」狀態。(git add, git mv, ...)
* 然後 Git 會依據「索引」當下的狀態,決定要把那些檔案提交到 Git 的「儲存庫」裡。(git status)
* 最後提交變更時 (git commit),才會把版本資訊寫入到「物件儲存區」當中 (此時將會寫入 commit 物件)。




--實作心得
用commit物件就可以看到tree物件,用tree物件就可以看到blob物件或其他tree物件
得知該commit 有多少內容~ 當然這是屬於較細的追蹤

沒有留言:

張貼留言