筆記 讀官方Git教程 1 認識Git

2022-08-20 14:09:16 字數 2098 閱讀 8167

小書匠

版本管理

教程內容基本來自git官方教程,認真都了系列的文章,然後對一些重點的記錄下來,做了簡單的歸納並寫上自己的思考.

目錄:版本控制是一種記錄乙個或若干檔案內容變化,以便將來查閱特定版本修訂情況的系統。

採用版本控制系統(vcs)是個明智的選擇。 有了它你就可以將某個檔案回溯到之前的狀態,甚至將整個專案都回退到過去某個時間點的狀態; 你可以比較檔案的變化細節,查出最後是誰修改了哪個地方,從而找出導致怪異問題出現的原因; 又是誰在何時報告了某個功能缺陷等等。 使用版本控制系統通常還意味著,就算你亂來一氣把整個專案中的檔案改的改刪的刪,你也照樣可以輕鬆恢復到原先的樣子。 但額外增加的工作量卻微乎其微。

git 和其它版本控制系統(包括 subversion 和近似工具)的主要差別在於 git 對待資料的方法。概念上來區分,其它大部分系統以檔案變更列表的方式儲存資訊。下圖是一般csv的設計原理:

其他版本控制的原理

儲存的是每個檔案與初始版本的差異,即每個版本相當於以增量的方式儲存當前版本與初始版本的差異.

git版本控制原理

git不採用這種方式,而是是把資料看作是對小型檔案系統的一組快照。 每次你提交更新,或在 git 中儲存專案狀態時,它主要對當時的全部檔案製作乙個快照並儲存這個快照的索引。git 對待資料更像是乙個快照流

3.1本地操作

在 git 中的絕大多數操作都只需要訪問本地檔案和資源,一般不需要來自網路上其它計算機的資訊。

舉個例子,要瀏覽專案的歷史,git 不需外連到伺服器去獲取歷史,然後再顯示出來——它只需直接從本地資料庫中讀取。 你能立即看到專案歷史。 如果你想檢視當前版本與乙個月前的版本之間引入的修改,git 會查詢到乙個月前的檔案做一次本地的差異計算,而不是由遠端伺服器處理或從遠端伺服器拉回舊版本檔案再來本地處理。

3.2資料完整性

git 資料庫中儲存的資訊都是以檔案內容的雜湊值來索引,而不是檔名。這意味著不可能在 git 不知情時更改任何檔案內容或目錄內容。同時, 若你在傳送過程中丟失資訊或損壞檔案,git 就能發現。

3.3一般只新增資料

你執行的 git 操作,幾乎只往 git 資料庫中增加資料。 很難讓 git 執行任何不可逆操作,或者讓它以任何方式清除資料。

git 有三種狀態,你的檔案可能處於其中之一:

a.已提交(committed) 已提交表示資料已經安全的儲存在本地資料庫中。

b.已修改(modified) 已修改表示修改了檔案,但還沒儲存到資料庫中。

c.已暫存(staged) 已暫存表示對乙個已修改檔案的當前版本做了標記,使之包含在下次提交的快照中。

工作目錄、暫存區域以及 git 倉庫

git 倉庫目錄是 git 用來儲存專案的元資料和物件資料庫的地方。 這是 git 中最重要的部分,從其它計算機轉殖倉庫時,拷貝的就是這裡的資料。

工作目錄是對專案的某個版本獨立提取出來的內容。 這些從 git 倉庫的壓縮資料庫中提取出來的檔案,放在磁碟上供你使用或修改。

暫存區域是乙個檔案,儲存了下次將提交的檔案列表資訊,一般在 git 倉庫目錄中。 有時候也被稱作索引,不過一般說法還是叫暫存區域。

基本的 git 工作流程如下:

在工作目錄中修改檔案。

暫存檔案,將檔案的快照放入暫存區域。

提交更新,找到暫存區域的檔案,將快照永久性儲存到 git 倉庫目錄。

如果 git 目錄中儲存著的特定版本檔案,就屬於已提交狀態。 如果作了修改並已放入暫存區域,就屬於已暫存狀態。 如果自上次取出後,作了修改但還沒有放到暫存區域,就是已修改狀態。

Apache HttpCore官方教程筆記

httpcore是對http協議的基礎封裝的一套元件。乙個http訊息包含header和可選的body.請求頭 request header 由乙個請求行和一系列的頭字段組成。響應頭 response header 由乙個狀態行和一系列的頭字段組成。http訊息必須包含http版本。get http...

Python教程 1 認識Python

python是乙個高階程式語言,結合了解釋性 編譯性 互動性和物件導向的特點,是一種指令碼語言,具有極強的可讀性,相比其他語言經常使用關鍵字,其他語言的一些標點符號,它比其他語言更具有特色語法結構。它相較於其他語言的優勢有 python是由guido van rossum在1991年開發出的高階程式...

git 官方文件學習筆記

git完整筆記 git config list 檢查git配置 第一步安裝git時,先配置使用者名稱和郵箱 git config global user.name example git config global user.email johndoe example.com 配置預設編輯器,不配置...