工作區和暫存區 (六)
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