文件的三種狀態
對于任何一個文件,在 Git 內都只有三種狀態:已提交(committed),已修改(modified)和已暫存(staged)。
已提交(committed)表示該文件已經被安全地保存在本地數據庫中了;
已修改(modified)表示修改了某個文件,但還沒有提交保存;
已暫存(staged)表示把已修改的文件放在下次提交時要保存的清單中。
由此我們看到 Git 管理項目時,文件流轉的三個工作區域:Git 的工作目錄,暫存區域,以及本地倉庫。
圖 1-6. 工作目錄,暫存區域,以及本地倉庫
每個項目都有一個 Git 目錄(譯注:如果 git clone出來的話,就是其中 .git的目錄;如果 git clone --bare的話,新建的目錄本身就是 Git 目錄。),它是 Git 用來保存元數據和對象數據庫的地方。該目錄非常重要,每次克隆鏡像倉庫的時候,實際拷貝的就是這個目錄里面的數據。
從項目中取出某個版本的所有文件和目錄,用以開始后續工作的叫做工作目錄。這些文件實際上都是從 Git 目錄中的壓縮對象數據庫中提取出來的,接下來就可以在工作目錄中對這些文件進行編輯。
所謂的暫存區域只不過是個簡單的文件,一般都放在 Git 目錄中。有時候人們會把這個文件叫做索引文件,不過標準說法還是叫暫存區域。
基本的 Git 工作流程如下:
在工作目錄中修改某些文件。
對修改后的文件進行快照,然后保存到暫存區域。
提交更新,將保存在暫存區域的文件快照永久轉儲到 Git 目錄中。
所以,我們可以從文件所處的位置來判斷狀態:如果是 Git 目錄中保存著的特定版本文件,就屬于已提交狀態;如果作了修改并已放入暫存區域,就屬于已暫存狀態;如果自上次取出后,作了修改但還沒有放到暫存區域,就是已修改狀態。
摘自:http://iissnan.com/progit/html/zh/ch1_3.html