3. git 是如何做分布式版本控制的
4. 碎碎念
5. 參考資料
認真思考過能量守恆定律以後,筆者突然覺得這個定理很值得深入思考。因為這個定理不應該僅僅侷限於物理學中,在計算機系統設計、社會學中均可使用。
什麼?你不信,那闊以先看看我的解釋,反正學到就是賺到,又不吃虧是吧。
注:「能量守恆原理」能量既不會憑空產生,也不會憑空消失,它只會從一種形式轉化為另一種形式,或者從乙個物體轉移到其它物體,而能量的總量保持不變。幾乎所有給 git 的定義都有寫,git 是分布式版本控制軟體,那就先從思考「版本控制」是什麼開始吧?
猶記起大學寫**,然後反覆修改的場景。真真的跟下圖「一模一樣」。
這種版本管理的方式,應對於**修改的場景已經最夠,甚至於每年畢業季你在大部分的畢業生的電腦裡都能夠找到如上圖所示的「版本控制」方式,所以根本無需優化。但「無需優化」的最根本的原因是「規模」和「頻率」:
所以,結論是針對於特定場景下確實存在「版本控制」的需求,但不是強需求
提公升「規模」、「頻率」並且轉換「使用場景」後,你會深深的意識到版本管理是有多麼重要!再比如,還是筆者,現在已經成為一名還算合格的小小後端軟體開發工程師,日常最多的工作就是「製造 bug」以及「修復 bug」,這個時候你說不會對**庫做版本管理,會看到以下結果(ps 嗯,傳說中的程式媛
下圖是一張版本控制的發展圖:
注:林納斯·托瓦茲決定自行開發版本控制系統替代bitkeeper,以十天的時間編寫出git第乙個版本。版本管理的核心要點是,「能夠針對版本名稱,找到版本資料」,分析一下原始和 git 分布式版本的設計要點
二者的基礎能力對比總結如下:
原始版本管理分布式版本管理分布式版本管理的優點
不同版本資料儲存方式
儲存每個版本的全部資料。
僅儲存每個版本的更改檔案的全部資料
儲存粒度更細,重複儲存的檔案更少,所占用的儲存空間更少
多檔案版本管理
資料夾的方式,每次備份整個檔案
庫的方式,乙個庫下可儲存多個檔案
平手,沒啥顯著優點
版本間操作記錄關聯
不支援支援,每次操作對應乙個 commit
能夠快速查詢某個版本的操作內容,快速回滾版本
原始版本管理遇到的問題,分布式版本管理也同樣會遇到,只是分布式版本管理在設計、實現上更好,支援了更多的操作。
注:來讓我們應用下開頭的能量守恆原理:基礎功能包含三個要解決的問題:你需要做的人,別人也同樣需要做,事件不會減少。
付出更多的能量,便可到更多的結果。種多少因,結多少果哦
「學會使用一樣家用電器最好的方式,不是去仔細看說明書,而是先去用,**有疑問以後再返回來看,這可以加深印象」
好了,新建乙個 git-demo 的倉庫,提交乙個檔案,然後就闊以開始動手分析了:
是時候回答下上面的問題了:
每次變更操作的內容如何記錄
用 commit 做記錄,其中每乙個 commit 物件都精確地記錄了它被建立時的倉庫目錄結構和檔案內容,git 的 history 就是這些 hash 物件構成的有向圖。
庫下的檔案是如何組織
用 tree 儲存,它會記錄下當前目錄下檔案的組織情況。
檔案是如何記錄的
用 blob 儲存,會記錄檔案的全部內容。
而 commit、blob、tree 的檔案都會以 hash 的方式命名儲存於當前倉庫的 .git/objects 目錄下。
「舉一反三」這個詞的重點不是反三,是要先明白一是什麼後,再做深入思考?
思考如下兩個延伸問題:
老規矩,動手試試唄。
對原文的變更,git 是如何儲存的
是全量儲存變更後的問題,分析如下圖所示
注:乙個單檔案變更的提交會產生三個 hash object,乙個操作 commit hash,乙個檔案內容 hash,還有乙個是 tree 的 hash (ps 檔案變更導致目錄變更,導致 tree 變更庫檔案下巢狀子目錄如何表示
庫下如果插入子目錄,會在儲存時巢狀儲存乙個 tree 型別的 hash 值。如下圖所示
整個分析過程如下:
注:相同檔名和內容的檔案,git 不會做二次記錄,參照上圖的 a.txt實現上述的基礎功能後,git 可以在上面的基礎功的基礎上實現更負責的能力,比如:等等很多功能,但是篇幅有限,今天就先寫到這裡吧,後面的闊以先欠著。
大概是很容易被**,又是因為喜歡的句子開心的一天,繼續完結撒花。
好像有那麼一丟丟跑題,但是管他呢,反正是學到了呀。
能量守恆定律
元宵節前門的花燈沒有我想象中的好玩 浪漫。天空中飄舞著雪花,理應給節日的花燈會增添一絲別樣的韻味,也許是人太多,也許是花燈會辦的更像小商品熱銷會吧,總之我沒有特別興奮的情緒。並且在十五的這夜我充分認識了乙個定律 能量守恆定律。能量既不會憑空產生,也不會憑空消失,它只能從一種形式轉化為其他形式,或者從...
說說能量守恆定律
能量守恆原理,它的內容是 一切事物皆是由能量組成,不會憑空出現或消失,只能從一種形式轉化成另一種形式。當我們了解這個原理後,同時,再結合我們中華智慧型文化,就可以用來探索真正的財富了。我們來看兩個很有意思的中國文字 德和得,這兩個字音是一樣的,在古代直接可以用德代替得。它們分別代表了什麼意思呢?德和...
阿 暗能量守恆定律
阿!黑色的能量守恆定律,想從前山黑 哈?超級艦隊!火神,撒哈拉沙漠,哦,她是我普通的聲音 白色的叛軍已經焊接。玫瑰是雙蛋形快速樹突高能但也喜歡笑 我想脈衝,我認為它是綠色執行 綠色 金色和垂直於彼此 摩擦風衣在想 一切都酗酒,唯一的太空衣 周圍的火。只有強者磁性刀 有質感,美麗的和清晰的 起泡液體螢...