上次課中,咱們建立了本身的Git倉庫,並向其中添加了一個readme.txt的文件。在繼續深刻介紹Git的使用方法以前,有必要先來說一講Git的工做流。
git
在你自建的Git本地倉庫中,有三個區域:本地目錄、暫存區、HEAD。要搞清Git的工做流就要理解這三個區域的做用。web
工做目錄,就是受Git控制的文件夾,全部被跟蹤記錄的文件都包括在其中;緩存
暫存區(index或者stage),相似一個緩存區域,臨時保存你作的改動;併發
HEAD,指向最近一次提交後的結果。spa
用一個比喻來描述一下這三個區域:假設你是一個學生,你須要寫一門課的做業,做業有好幾張試卷和幾本練習題,寫好以後把做業交給老師。命令行
你把全部做業放在桌上開始寫,這裏就是你的「工做目錄」。當你寫完一張試卷,把它放進你的書包裏,它就進入了「暫存區」。等你把做業都寫完了,放在書包裏帶到學校,所有交給了這門課的老師,他就是HEAD所指向的位置。版本控制
而對於項目中的文件來講,分爲未跟蹤(untracked)和已跟蹤(tracked)兩種狀態。orm
未跟蹤的文件的改動不受到Git的版本控制。而已跟蹤的文件,即被歸入版本控制的文件,又分爲未修改(unmodified)、已修改(modified)、已暫存(staged)三種狀態。工作流
當在工做目錄中新加入一個文件時,它處於未跟蹤狀態,這表示其沒有歸入Git的版本控制。經過 git add 命令能夠將其加入跟蹤,並同時放入暫存區。it
一個已經被跟蹤的文件,若是沒有作過新的修改,就是未修改狀態。一旦對其作了改動,就變成了已修改狀態。經過 git add 命令能夠將已修改的文件放入暫存區。
初次克隆某個倉庫時,工做目錄中全部文件都是已跟蹤且未修改的狀態。
git commit 命令會將暫存區中的文件提交至HEAD所指向的分支。關於分支的概念,咱們後面再說。當被commit以後,暫存區的文件將回到未修改狀態。
另外,也能夠經過 git rm 將已經跟蹤的文件從Git中移除。
再來套用前面的那個例子:做業裏要交的試卷和練習題都處於已跟蹤狀態,那些不用交的就是未跟蹤。當你寫了某張試卷以後,它就變成了已修改。寫完了把它放進書包,它就是已暫存。等你把它提交給老師以後,假設老師瞬間就把它批改完併發還給你,那這時對你來講,它又從新成爲了未修改。
git status 命令是用來查看倉庫中文件的狀態。在命令行中,你的工做目錄下運行此命令,能夠看到輸出文件狀態信息。試試執行這條命令,而後修改readme.txt後再試試,看看有什麼不一樣。下節課咱們結合它來具體分析狀態的變化。