1. 程式人生 > >git工作區和版本庫的概念和一個簡單的例子

git工作區和版本庫的概念和一個簡單的例子

//再簡單學習了一下git和github之後,我發現對於github的工作區間,暫存區和版本庫的概念有些模糊,似乎知其然,知其不然,於是上網查閱各種資料,終於有點懂了。

1.工作區(Working Directory)

在通過git init 命令後在當前目錄中出現.git目錄,該目錄預設是隱藏的,需要關閉顯示隱藏檔案才能看到。實際上執行git init 命令後,當前目錄就成為了工作區(工作區可以理解為操作本地倉庫的車間),而且,可以發現如果繼續在工作區進行建立其他的資料夾等操作,.git目錄只有一個。

所以我不是很認同工作區就是在電腦裡能看到的目錄這一說法,因為在我電腦裡建立的每一個工作區都進行了git init操作。

2.版本庫(Repository)

本地倉庫和版本庫是一個意思,他們的英文都是Repository。版本庫就是你工作目錄中的.git資料夾,版本庫中存放了很多東西,比較重要的就是stage(或者叫做index)有一集被自動建立的master分支,還有指向master的指標HEAD。我們不能手動修改版本庫裡邊的任何資料,否則將會造成不可預料的錯誤。

3.暫存區(stage)

暫存區:英文叫stage, 或index。在版本庫.git)目錄下,有一個index檔案。它實際上就是一個包含檔案索引的目錄樹,像是一個虛擬的工作區。在這個虛擬工作區的目錄樹中,記錄了檔名、檔案的狀態資訊(時間戳、檔案長度等),檔案的內容並不儲存其中,而是儲存在Git物件庫(.git/objects)中,檔案索引建立了檔案和物件庫中物件實體之間的對應。如果當前倉庫,有檔案更新,並且使用git


git框架的整體規劃結構見下圖。


把檔案網Git庫中新增的時候分兩步執行的:

(1)用git add 把檔案新增進去,實際上就是把檔案新增到stage中

(2)用git commit 提交更改,實際上就是把stage的所有內容提交到當前分支。

因為我們建立git版本庫時,git自動為我們建立了唯一一個master分支,所以,現在,git commit就是往master分支上提交修改。


下邊我們做一個簡單的例子,以便區分版本庫和工作空間。

首先在一個工作區中建立一個txt,檔案並隨便寫幾個單詞,在這裡我建立的aa.txt檔案。


檢視資料夾裡邊的內容,此時對資料夾的內容進行修改儲存(我在原有文字下加了一行ahaaha),然後執行如下指令

git checkout  --命令用於將版本庫中中aa.txt中的文件內容讀入到當前工作空間的aa.txt文件中。


再次對檔案進行相同的修改,並將檔案提交到暫存區和版本庫之後執行git checkout --命令觀察變化


參考:

https://my.oschina.net/u/1757002/blog/534391

http://blog.csdn.net/u011116672/article/details/51234118

http://san-yun.iteye.com/blog/2061647

本文