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

 

 區分三者關係

       Git最讓你迷惑的無非是它裏面的各種概念了,如果是剛開始接觸Git希望看完本篇介紹之後有一個清晰的認識,筆者認識也有限這裏只說說個人對使用Git的感受,說一下它裏面的幾個最常用的概念的理解。

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

       

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

       實例講解

       平時我們使用的命令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比其他版本系統設計優秀的一點,以後,會詳細說一下各個版本系統管理文件是如何管理的,他們的設計思想是什麼。

       通過三個命令理解

      下面還有一個需要注意的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可視化工具,不如學幾個命令,況且再多的界面底層也是調用這麼多的命令來實現的,有了界面就讓我們變懶了,降低了開發者的水平,提高開發效率的同時也失去了更多的學習、研究機會。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章