1. 程式人生 > >工作區和暫存區 (六)

工作區和暫存區 (六)

Git和其他版本控制系統如SVN的一個不同之處就是有暫存區的概念。

工作目錄(Working Directory)
就是你在電腦裡能看到的目錄,比如我的learngit資料夾就是一個工作區,工作區有一個隱藏目錄.git。


版本庫(Repository) 

這個不算工作區,而是Git的版本庫。

Git的版本庫裡存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,

還有Git為我們自動建立的第一個分支master,以及指向master的一個指標叫HEAD。 

分支master和HEAD的概念我們以後再講。

前面講了我們把檔案往Git版本庫裡新增的時候,是分兩步執行的:

         第一步是用 git add 把檔案新增進去,實際上就是把檔案修改新增到暫存區;

         第二步是用 git commit 提交更改,實際上就是把暫存區的所有內容提交到當前分支。

因為我們建立Git版本庫時,Git自動為我們建立了唯一一個master分支,所以,現在,git commit就是往master分支上提交更改。簡單理解為:需要提交的檔案修改通通放到暫存區,然後,一次性提交暫存區的所有修改。


現在,再修改一次 index.html 檔案,再新增一行內容,如下圖所示:

接著在工作區 learngit 檔案下,新增一個 app.js 檔案 (內容隨意);

使用命令 git status 檢視Git 版本庫此時的狀態:

由上圖可知:index.html 檔案已被修改,app.js 檔案 顯示為 Untracked files 沒有路徑的檔案,說明還沒有被新增過。

那麼接下來:使用兩次命令 git add ,把 index.html 和 app.js 新增到 暫存區(Stage),用命令 git status 再檢視一下,如下圖:

此時此刻,暫存區(Stage) 的狀態如下:

實際上,git add 命令 就是把要提交的所有修改檔案新增到暫存區(Stage),

然後再執行 git commit 命令可以一次性把暫存區的所有修改檔案提交到分支master,如下圖:

提交之後,後續沒有對工作區產生其他修改,那麼工作區就是‘乾淨’的,如下:

此時,版本庫 裡的暫存區就沒有任何內容了:


小結:

版本庫(Repository):暫存區(Stage)+ 分支(master)。暫存區是Git非常重要的概念。

轉自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000