Git的基本知識

Git的基本知識

也就是簡而言之Git是什麼。這是一個重要的要學習的區域,因爲如果你理解了什麼是Git和Git是怎麼工作的,那麼高效的使用Git對你來說將變得非常簡單。當你學習Git的時候,嘗試忘掉你知道的其他版本管理系統知識,如SVN和Perforce,這樣做能夠幫你在使用Git時避免一些迷惑。Git在存儲和考慮信息方面與其他系統有很大的不同,即使用戶接口看起來相當相似。理解那些差異可以幫你在使用它的時候免於迷惑。

Snapshots,Not Differences(是快照,不是差異)

Git與其他版本管理系統最主要的不同是它考慮它的數據的方式。從概念上講,絕大多數其他版本管理系統以基於文件的改變的列表的方式存儲數據,這些版本管理系統(CVS,SVN,Perforce等等)將他們所保存的信息作爲文件集合,然後通過時間判斷每個文件的改變。

image

Git並不這樣考慮和存儲它們的數據,相反,Git認爲它的數據更像一個微型文件系統的快照集。每次你提交或者保存你的項目的Git狀態,Git會拍下那一瞬間你所有文件的樣子,並且給這個快照存儲一個引用。爲了高效,如果你的文件沒有發生改變,Git不會在次存儲你的文件,只會生成一個前面已存儲文件的一個鏈接。Git考慮數據更像作爲快照流考慮。

image

這是Git同其他幾乎所有版本管理系統之間的一個重要區別。它使得Git重新考慮幾乎版本控制的每一方面,而其他版本管理系統則從其上一代拷貝。這同樣使得Git更像一個小型的文件系統,而不僅僅只是一個版本管理系統。如果要探索這種方式考慮數據的好處,查看git branching

Nearly Every Operation Is Local(幾乎都是本地操作)

Git中大多數操作僅需要操作本地文件和資源,通常不需要網絡中其他電腦上的信息。因爲你在你的本地硬盤上擁有你項目所有的歷史版本,大部分操作完成看起來都像瞬時一樣。

例如,要瀏覽項目的歷史記錄,git不需要從服務器獲取版本歷史然後展示給你,它僅僅需要從你的本地git庫裏讀取即可。這意味着你用Git查看項目歷史時幾乎是即時的。如果你要查看一個文件的一個月前版本與現有版本的差異,Git能夠查找一個月前的此文件然後作一個本地差異計算,而不需要不得不要麼請求遠程服務,要麼從遠程服務拉取此文件一個月前的版本。

這也意味着如果沒有網絡或者VPN,你受影響不能做的將會很少。

The Three States(三種狀態)

現在,注意了,如果你想要順利的Git的其他知識,這三個狀態相當重要。在Git中你的文件存在三種主要狀態:committed、modified和staged。Committed表示數據已安全的存入你的本地Git庫;modified表示你已經改變了你的文件,但是你還沒有將其提交到你的本地git庫;Staged表示你已經在你的一個已修改文件的現在版本中標記下次提交。

這導致了Git項目中有三個主要區域:git目錄、working tree和staging區域。

image

git目錄是Git存儲你項目元數據和對象數據庫的地方。這是Git最重要的部分,它是在你從別的電腦clone一個git庫時複製的什麼。

working tree是項目的一個版本的單個檢出。檢出的文件是從Git 目錄中拉取的,並且放致在磁盤上以供你的修改或者使用。

staging區域是一個文件,通常在你的git目錄中包含,存儲關於你下次提交的信息。它有時也被叫做”index”.

如果一個文件的版本存在於git目錄中,它被認爲是已提交了;如果它被修改了或者添加到staging區域了,它被認爲是staged;如果它從檢出後改變了,但是還沒添加到Staged區域,它被認爲modified。

發佈了42 篇原創文章 · 獲贊 10 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章