git所劃分成幾個區域,各區域的作用

Git的區域分爲 工作區、暫存區、本地倉庫區

 

工作區(work directory):一般就是我們項目的根目錄。

本地倉庫(repository):我們在爲項目添加本地庫之後,會在工作區生成一個如下圖所示的隱藏目錄“.git”,.git目錄即爲當前工作區的本地版本庫

暫存區(stage):版本庫中設立一個暫存區(Stage or Index),作爲用來直接跟工作區的文件進行交互,工作區文件的提交或者回滾首選都是通過暫存區,而版本庫中除了暫存區之外,文件的提交的最終存儲位置是分支(Branch),在創建版本庫的時候默認都會有一個主分支(Master)。

 

  • git add files:把當前工作文件拷貝到暫存區域。
  • git commit:在暫存區域生成文件快照並提交到本地倉庫。
  • git reset – files:用來撤銷最後一次 git add files;
  • git reset 撤銷所有暫存區域文件;
  • git checkout – files:把文件從暫存區域覆蓋到工作目錄,用來丟棄本地修改。

其中,reset操作是將暫存區內選中的目標文件從暫存區中丟棄,不影響其他任何區域的文件,等同於一個自刷新的動作;

 

 

相關命令

  • git commit -a 等同於連續執行 git add 與 git commit,即先把文件從工作目錄複製到暫存區,然後再從暫存區複製到倉庫中;
  • git checkout HEAD – files 的過程剛好相反,將工作區和暫存區都同步至當前分支內的狀態;也就是最後一次commit的狀態;
  • 撤銷操作主要有如下幾種
  • git commit   --amend        撤銷上一次提交  並講暫存區文件重新提交
  • git checkout -- <file>     拉取暫存區文件 並將其替換成工作區文件
  • git reset HEAD  -- <file>  拉取最近一次提交到版本庫的文件到暫存區  改操作不影響工作區

 

相關命令

  • git diff:查看尚未暫存的文件更新了哪些部分;即當前狀態下工作區和暫存區之間的差異。
  • git diff –cached:查看已暫存文件和上次提交時的快照之間的差異;即當前狀態下暫存區和分支內的差異。
  • git diff HEAD:查看未暫存文件與最新提交文件快照的區別;即當前狀態下工作區和分支內的差異。

 

注意:此圖解主要針對已跟蹤狀態文件而言,對於新增文件,有些操作會有問題。

1. 修改本地已被跟蹤文件,文件進入未暫存區域。

2. 未暫存區域轉到暫存區域

  • git add files

3. 暫存區提交到本地倉庫

  • git commit -m

4. 直接從未暫存區提交到本地倉庫

  • git commit -am
  • 經測試,對已跟蹤的文件可以正確執行,而對於未跟蹤文件(即新增文件)則會出錯

5. 本地庫回退到暫存區

  • git reset –soft hash
  • git reset –soft origin/master
  • 一般回退到暫存區的文件作排查用,不要直接修改,不然會同時出現在暫存區和未暫存區(其實即使修改了也木有太大關係)

6. 本地庫回退到未暫存區

  • git reset –mixed hash
  • git reset –mixed origin/master
  • 一般回退到未暫存狀態就是爲了進一步的修改

7. 本地庫回退到文件初始狀態(即此版本的)

  • git reset –hard hash
  • 注意這裏,通常先執行一次fetch,保證本地版本是origin的最新版本,然後再回退。(最厲害的是,這麼操作不會有衝突,直接讓文件變成和origin保持一致)
    • git fetch origin
    • git reset –hard origin/master
    • 特別注意:這麼操作會使你對文件的修改全部消失,還原成最初狀態。
  • (針對上一條情況衍生講解)通常在推送到origin時,先要pull,然後再推送,一般是修改提交了的文件和pull下來的同一個文件產生衝突(所以建議修改代碼前,一定先要pull)
    • git pull
    • git push origin master

8. 暫存區回退到未暫存區

  • git reset – files
  • git rest
    • 撤銷所有暫存區的文件

9. 未暫存區回退到文件初始狀態

  • git checkout – files

10. 暫存區回退到文件初始狀態

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