git詳解1 - 工做區、暫存區、版本庫、遠程倉庫

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

一、概念

  一、四個工做區域

    Git本地有四個工做區域:工做目錄(Working Directory)、暫存區(Stage/Index)、資源庫(Repository或Git Directory)、git倉庫(Remote Directory)。文件在這四個區域之間的轉換關係以下:git

Workspace: 工做區,就是你平時存放項目代碼的地方算法

Index / Stage: 暫存區,用於臨時存放你的改動,事實上它只是一個文件,保存即將提交到文件列表信息安全

Repository: 倉庫區(或版本庫),就是安全存放數據的位置,這裏面有你提交到全部版本的數據。其中HEAD指向最新放入倉庫的版本服務器

Remote: 遠程倉庫,託管代碼的服務器,能夠簡單的認爲是你項目組中的一臺電腦用於遠程數據交換工具

  二、文件的四種狀態

  版本控制就是對文件的版本控制,要對文件進行修改、提交等操做,首先要知道文件當前在什麼狀態,否則可能會提交了如今還不想提交的文件,或者要提交的文件沒提交上。GIT不關心文件兩個版本之間的具體差異,而是關心文件的總體是否有改變,若文件被改變,在添加提交時就生成文件新版本的快照,而判斷文件總體是否改變的方法就是用SHA-1算法計算文件的校驗和。spa

Untracked:   未跟蹤, 此文件在文件夾中, 但並無加入到git庫, 不參與版本控制. 經過git add 狀態變爲Staged.版本控制

Unmodify:   文件已經入庫, 未修改, 即版本庫中的文件快照內容與文件夾中徹底一致. 這種類型的文件有兩種去處, 若是它被修改, 而變爲Modified.若是使用git rm移出版本庫, 則成爲Untracked文件htm

Modified: 文件已修改, 僅僅是修改, 並無進行其餘的操做. 這個文件也有兩個去處, 經過git add可進入暫存staged狀態, 使用git checkout 則丟棄修改過,blog

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

Staged: 暫存狀態. 執行git commit則將修改同步到庫中, 這時庫中的文件和本地文件又變爲一致, 文件爲Unmodify狀態. 執行git reset HEAD filename取消暫存,

               文件狀態爲Modified

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

 

 

 

 

 

 

 

 

 

 

 

轉載自:雨點的名字

相關文章
相關標籤/搜索