git原理簡介

2021-08-08 01:34:36 字數 1228 閱讀 7174

git 究竟是怎樣的乙個系統呢?請注意,接下來的內容非常重要,若是理解了 git 的思想和基本工作原理,用起來就會知其所以然,游刃有餘。

在開始學習 git 的時候,請不要嘗試把各種概念和其他版本控制系統(諸如 subversion 和 perforce 等)相比擬,否則容易混淆每個操作的實際意義。git 在儲存和處理各種資訊的時候,雖然操作起來的命令形式非常相近,但它與其他版本控制系統的做法頗為不同。理解這些差異將有助於你準確地使用 git 提供的各種工具。

直接記錄快照,而非差異比較

git 和其他版本控制系統的主要差別在於,git 只關心檔案資料的整體是否發生變化,而大多數其他系統則只關心檔案內容的具體差異。這類系統(cvs,subversion,perforce,bazaar 等等)每次記錄有哪些檔案作了更新,以及都更新了哪些行的什麼內容:

其他系統在每個版本中記錄著各個檔案的具體差異

git 並不儲存這些前後變化的差異資料。實際上,git 更像是把變化的檔案作快照後,記錄在乙個微型的檔案系統中。每次提交更新時,它會縱覽一遍所有檔案的指紋資訊並對檔案作一快照,然後儲存乙個指向這次快照的索引。為提高效能,若檔案沒有變化,git 不會再次儲存,而只對上次儲存的快照作一鏈結。git 的工作方式就如下圖所示。

git 儲存每次更新時的檔案快照

這是 git 同其他系統的重要區別。它完全顛覆了傳統版本控制的套路,並對各個環節的實現方式作了新的設計。git 更像是個小型的檔案系統,但它同時還提供了許多以此為基礎的超強工具,而不只是乙個簡單的 vcs。稍後會討論 git 分支管理的時候,我們會再看看這樣的設計究竟會帶來哪些好處。

近乎所有操作都是本地執行

在 git 中的絕大多數操作都只需要訪問本地檔案和資源,不用連網。但如果用 cvcs 的話,差不多所有操作都需要連線網路。因為 git 在本地磁碟上就儲存著所有當前專案的歷史更新,所以處理起來速度飛快。

舉個例子,如果要瀏覽專案的歷史更新摘要,git 不用跑到外面的伺服器上去取資料回來,而直接從本地資料庫讀取後展示給你看。所以任何時候你都可以馬上翻閱,無需等待。如果想要看當前版本的檔案和乙個月前的版本之間有何差異,git 會取出乙個月前的快照和當前檔案作一次差異運算,而不用請求遠端伺服器來做這件事,或是把老版本的檔案拉到本地來作比較。

git之工作原理簡介

個人感覺,看完git的設計原理之後,對我使用git有挺大的幫助,至少也知道自己乙個命令敲下去是有什麼後果。簡單來說 有了工作區 暫存區 分支這三個概念之後,再來看下git的幾個命令 以下是 git權威指南 對git暫存區的介紹 個人的一點看法 git的工作區就是用來隨便改的,就是一不小心誤刪了損失的...

Git學習筆記1 Git原理簡介

git 是乙個分布式的版本控制工具,如果想用github等版本控制系統,核心就是git,下面簡單介紹一些git的基礎原理,原文 git不像傳統的vcs將程式按檔案存放管理 如下圖 當有檔案有改動時,下個version會將整個改動的file複製。這樣的管理方式既費事,又占用大量冗餘空間。而git訪問方...

git 命令簡介

檢視工作區修改後的檔案和本地版本庫中檔案的不同 git diff filename 檢視本地版本庫的當前狀態 git status 檢視版本日誌 git log 檢視精簡的日誌 git log pretty oneline 檢視命令記錄 git reflog 在本地倉庫中我們能夠看到的檔案為工作區,...