git工做區、暫存區、版本庫之間的關係

 區分三者關係

       Git最讓你迷惑的無非是它裏面的各類概念了,若是是剛開始接觸Git但願看完本篇介紹以後有一個清晰的認識,筆者認識也有限這裏只說說我的對使用Git的感覺,說一下它裏面的幾個最經常使用的概念的理解。linux

       在初始化git版本庫以後會生成一個隱藏的文件 .git ,能夠將該文件理解爲git的版本庫 repository,而咱們本身創建的項目文件夾即工做區 working directory ,在.git 文件夾裏面還有不少文件,其中有一個index 文件 就是暫存區也能夠叫作 stage ,git還爲咱們自動生成了一個分支master以及指向該分支的指針head ,以下圖   git

       

       從圖中能夠看出來respository包括分支master和stage, working diretory 能夠理解爲咱們打開開發環境如eclipse,裏面的內容即工做區的內容,在工做區裏面有的代碼以及配置文件等咱們須要提交到版本庫裏面,最終是到了分支master上面,暫存區只是一個臨時保存修改文件的地方。eclipse

       實例講解

       平時咱們使用的命令git add file1 是把文件從工做區提交到暫存區,git commit -m "prompty" file1 是把文件從暫存區提交到了分支master下面,這裏由於只有一個分支master,就提交到master上了,下面讓咱們再來結合具體例子來講明一下。工具

       咱們修改一下tgb.txt文件增長一行 "l love you" ,並新建一個文件 test1.txt,如今尚未執行git add命令,這種修改都還停留在工做區內,用git status查看狀態,如圖學習

      

       上圖代表修改並無在暫存區裏面,當咱們執行git add test1.txt ,git add tgb.txt後,再來看一下狀態設計

        

      這兩個文件被添加到了暫存區,可是尚未提交,當執行git commit -m "tijiao" 後文件即從暫存區到了master分支上面,如圖將看不到暫存區裏面有什麼內容。指針

     

      Git管理的是添加到暫存區裏面的修改,包括增刪改等等都算是能夠跟蹤的文件變更,也能夠說git只管理咱們變更的部分變更的咱們才往暫存區提交,這也是git比其餘版本系統設計優秀的一點,之後,會詳細說一下各個版本系統管理文件是如何管理的,他們的設計思想是什麼。ip

       經過三個命令理解

      下面還有一個須要注意的git diff 命令的差別:開發

  git diff 比較的是工做區和暫存區的差異
  git diff --cached 比較的是暫存區和版本庫的差異
  git diff HEAD 能夠查看工做區和版本庫的差異同步

      經過一個添加文件既能夠明顯看出他們之間區別,不過這裏有一個前提是已經提交到暫存區的文件修改的時候才能夠看出明顯區別,這也是覺得啥git只能跟着提交到暫存區的文件,若是隻是在工做區新建一個文件,那麼輸入這三個命令都沒有結果爲空白。

      咱們繼續修改tgb.txt,在文件末尾添加  we are good boy.

      分別輸入三個命令,效果爲:

      

      從圖中能夠看出,工做區與暫存區、工做區與版本庫都有變化,而版本庫與暫存區並無變化。進一步執行git add tgb.txt 

        

      執行git add tgb.txt以後發現git diff沒有輸出內容,代表工做區與暫存區已經同步,暫存區與版本庫、版本庫與工做區沒有同步。最後一步執行git commit 

         

       當執行完git commit後,三個命令都沒有輸出結果,代表咱們修改的文件已經被同步的版本庫,已經被版本庫管理起來了。

總結:

       版本庫管理文件會很方便尤爲是代碼,等好多的命令熟了以後也會以爲並非那麼難用,主要使用的時候以爲git反應比較快,並且速度還能夠,如今不少人都在window開發而喜歡具備界面的版本工具軟件,而不去學習git命令,學習一些git 命令仍是頗有用的,假如讓你去linux上面開發或者在linux系統上面管理代碼,你就會徹底一籌莫展不懂原理也不懂命令,須要重新學習重新認識git。

       能夠說各類命令是git的根本,學習了命令不管哪個界面管理工做一看也就會了,如今有好多的git可視化工具,不如學幾個命令,何況再多的界面底層也是調用這麼多的命令來實現的,有了界面就讓咱們變懶了,下降了開發者的水平,提升開發效率的同時也失去了更多的學習、研究機會。

相關文章
相關標籤/搜索