Git 工作原理

2022-05-26 02:48:08 字數 1792 閱讀 1577

git 是最先進的開源分布式版本控制系統,最初由 linus 為解決 linux 的**管理而發明。版本控制系統(version control system, vcs)有很多實現,比如早期的 cvs,主要用於控制、協調檔案的一致性。目前使用最多的主要是 svn 和 git。

svn vs git

svn 是 subversion 的縮寫,使用乙個**版本庫來進行集中控制並記錄檔案變更歷史,支援多個分支並行開發,採用了客服端/伺服器模式,檔案的各個版本、分支都儲存在伺服器上。svn 採用的是 copy-modify-merge(拷貝-修改-合併)模式對檔案進行管理。

在 copy-modify-merge 模式下,當使用者想修改檔案時,先將伺服器檔案 update 到本地,然後在本地對副本進行修改,修改完成後,再將副本 commit 到伺服器。如果 commit 前其他使用者修改了檔案,則檔案版本號發生衝突,需要先 update 到本地進行合併,才能繼續 commit。

與 svn 不同,git 是分布式版本管理系統。從 git 伺服器 clone 檔案到本地,成為本地倉庫,包含了全部檔案和變更記錄,與之相對的伺服器倉庫被稱為遠端倉庫。當使用者想修改檔案時,直接對本地副本進行修改,修改完成後把改動 commit 到本地倉庫,需要同步時再 push 改動到遠端倉庫。由於使用本地倉庫,git 減少了很多網路開銷,使得效能比 svn 有極大的提公升,即使在斷網情況下也能繼續工作。

大多數 vcs 應用是基於增量的版本控制,即儲存了檔案資訊和對每個檔案所做的更改。而 git 是基於快照的版本控制,在每個版本都記下檔案的快照,並儲存對快照的引用。為了提高效率,如果檔案沒有更改,git 不會再次儲存該檔案,而只是指向它已經儲存的先前相同檔案的鏈結。因此,本質上,git 是一套內容定址(content-addressable)檔案系統。

git 倉庫

git 中的檔案和操作都以 git 物件來儲存。git物件分為 blob、tree 和 commit 三種型別,blob物件可以儲存幾乎所有的檔案型別,tree物件是用來組織blob物件的一種資料型別,commit物件表示每一次的提交操作。commit物件儲存了對tree物件的引用,tree物件儲存了對blob物件的引用。進行版本控制所需要的所有資料都在 .git 資料夾中,如圖所示。

git 資料夾核心檔案包括:config檔案、objects資料夾、head檔案、index檔案以及refs資料夾。

git 檔案狀態

git 的檔案有已提交(committed)、已修改(modified) 和已暫存(staged)三種狀態。

與之對應,git 中還有工作區(working directory)和暫存區(staging area)。工作區存放從倉庫 checkout 出來的檔案,使用者可以進行修改。下次將要 commit 的檔案資訊儲存在暫存區。commit 操作實際上是從暫存區 commit 到本地倉庫中。

git 命令

git 的常用命令如圖所示。首次從遠端倉庫建立本地倉庫使用 clone 命令;使用 checkout 命令從本地倉庫切換分支到工作區;增加檔案後,使用 add 命令提交變更到暫存區;修改完成後,使用 commit 命令提交變更到本地倉庫;需要同步時,使用 push 命令推送變更到遠端倉庫;遠端倉庫變化後,使用 pull 命令拉取變更到工作區。以上這些命令都是高層命令。

git之工作原理簡介

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

git命令及工作原理

git add 新增到暫存區 git commit m 提交到倉庫 git status 檢視狀態 git log 檢視歷史紀錄 git relog git reset head 回退 git reset 版本號 回退 git checkout 回退 建立dev分支然後切換 建立並卻換分支 git ...

Git的思想和基本工作原理

那麼,簡單地說,git 究竟是怎樣的乙個系統呢?請注意,接下來的內容非常重要,若是理解了 git 的思想和基本工作原理,用起來就會知其所以然,游刃有餘。在開始學習 git 的時候,請不要嘗試把各種概念和其他版本控制系統 諸如 subversion 和 perforce 等 相比擬,否則容易混淆每個操...