git詳解1 工作區 暫存區 版本庫 遠端倉庫

2022-03-10 04:08:09 字數 1368 閱讀 1635

git是當前應用最廣的版本控制工具。用好git是乙個龐大工程必不可少的條件之一。

git本地有四個工作區域:工作目錄(working directory)、暫存區(stage/index)、資源庫(repository或git directory)、git倉庫(remote directory)。檔案在這四個區域之間的轉換關係如下:

workspace: 工作區,就是你平時存放專案**的地方

index / stage: 暫存區,用於臨時存放你的改動,事實上它只是乙個檔案,儲存即將提交到檔案列表資訊

repository: 倉庫區(或版本庫),就是安全存放資料的位置,這裡面有你提交到所有版本的資料。其中head指向最新放入倉庫的版本

remote: 遠端倉庫,託管**的伺服器,可以簡單的認為是你專案組中的一台電腦用於遠端資料交換

版本控制就是對檔案的版本控制,要對檔案進行修改、提交等操作,首先要知道檔案當前在什麼狀態,不然可能會提交了現在還不想提交的檔案,或者要提交的檔案沒提交上。git不關心檔案兩個版本之間的具體差別,而是關心檔案的整體是否有改變,若檔案被改變,在新增提交時就生成檔案新版本的快照,而判斷檔案整體是否改變的方法就是用sha-1演算法計算檔案的校驗和。

untracked:未跟蹤, 此檔案在資料夾中, 但並沒有加入到git庫, 不參與版本控制. 通過git add 狀態變為staged.

unmodify:檔案已經入庫, 未修改, 即版本庫中的檔案快照內容與資料夾中完全一致. 這種型別的檔案有兩種去處, 如果它被修改, 而變為modified.如果使用git rm移出版本庫, 則成為untracked檔案

modified:檔案已修改, 僅僅是修改, 並沒有進行其他的操作. 這個檔案也有兩個去處, 通過git add可進入暫存staged狀態, 使用git checkout 則丟棄修改過,

返回到unmodify狀態, 這個git checkout即從庫中取出檔案, 覆蓋當前修改。(注意,這裡cheakout只會將沒有add過的檔案丟棄,如果檔案已經被加入暫存區則不會被丟棄。)

staged:暫存狀態. 執行git commit則將修改同步到庫中, 這時庫中的檔案和本地檔案又變為一致, 檔案為unmodify狀態. 執行git reset head filename取消暫存,

檔案狀態為modified

下面的圖很好的解釋了這四種狀態的轉變:

Git 工作區 暫存區 版本庫

工作區 我們會想當然的認為,當前倉庫所在目錄就是我們的工作區,其實這是不完全正確的。在當前倉庫中,新增,更改,刪除檔案這些動作,都發生在工作區裡面。暫存區 英文叫stage,或index。在版本庫.git 目錄下,有乙個index檔案。它實際上就是乙個包含檔案索引的目錄樹,像是乙個虛擬的工作區。在這...

Git 工作區 版本庫 暫存區

tags git 參考部落格 工作區 電腦裡能看到的目錄,就是我們建立的 learngit 資料夾。版本庫 工作區里有乙個隱藏的 git 目錄,這個就是 git 的版本庫。git 的版本庫里存了很多東西,其中最重要的就是稱為 stage 的暫存區,還有 git 為我們自動建立的第乙個分支 maste...

git 工作區 暫存區 版本庫

工作區 working directory 就是你在電腦裡能看到的目錄 版本庫 repository 工作區有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。暫存區 git的版本庫里存了很多東西,其中最重要的就是稱為stage 或者叫index 的暫存區,還有git為我們自動建立的第乙個分...