Git 學習(三)本地倉庫操做——git add & commit

 Git 學習(三)本地倉庫操做——git add & commit

 

 

  Git 和其餘版本控制系統如SVN的一個不一樣之處就是有暫存區的概念。這在上文已有說起,本文具體說明什麼是工做區及暫存區,以及如何使用本地git庫的操做命令:重點 git add 及 git commit 。git

  回顧上一章節版本庫建立: 先將 D:盤下的 learngit 整個文件夾刪除,而後建立空的 Git 版本庫。學習

  

  工做區 和  版本庫

    工做區(Working Directory)即操做系統中看到的文件夾,如  d:/learngit ,目前工做區是空的。google

    工做區有一個隱藏目錄.git,這個不算工做區,而是Git的版本庫(Repository)。Git的版本庫裏存了不少東西,其中最重要的就是稱爲stage(或者叫index)的暫存區,還有Git爲咱們自動建立的第一個分支master,以及指向master的一個指針叫HEAD。spa

    回顧上一章節,咱們把文件往Git版本庫裏添加的時候,是分兩步執行的:

      第一步:git add 把文件添加進去,實際上就是把文件修改添加到暫存區操作系統

      第二步:git commit 提交更改,實際上就是把暫存區的全部內容提交到當前分支(建立Git版本庫時,Git自動建立了master分支; 因此,目前 git commit 就是往master分支上提交更改;分支的概念以後章節會詳細說明)版本控制

    可簡單理解爲,須要提交的文件修改統統放到暫存區;而後,一次性提交暫存區的全部修改。下面具體說明 git add 及 git commit 操做 (有興趣的可關注下 git add 和 commit 文件後 .git 目錄的變化)指針

 

  暫存區操做 git add

    暫存區操做使用 git add 命令,git add <filename> 能夠添加單個文件至暫存區,咱們可在當前空的 learngit 文件夾中加入文件;此時,暫存庫(stage)中會存有以前 add 的文件。

 

    git add <file>   把單一指定文件加入至暫存區(須加後綴格式)
code

    例如:在該文件夾中新建一空的 1.txt 文件,將該文件加入暫存區,需  git add 1.txt ; 未 add 前,git status 會提示(紅框)。
blog

 

    

    若修改了該 1.txt, 因爲工做區和暫存區文件不一樣,仍須  git add 1.txt
文檔

    若新增或更改多個指定文件, 可以使用空格分隔多個文件add,如:  git add 1.txt 2.txt 

 

    文件名稱也可以使用通配符 * 等進行操做,如:  git add *.txt,表示保存全部 .txt 後綴文件至暫存區 (有關文件通配符請自行google瞭解)

 

    若需查閱工做區與暫存區的差別,可用  git diff

    git diff        工做區與暫存區相比的差別

 

    工做區刪除了文件,若暫存區也須刪除,可用  git rm <file> 

    git rm <file>     暫存區刪除文件,可多個,空格分隔

 

    若大批量 增、刪、改文件,顯然一個個添加或刪除是不可取的,如下命令可快捷操做暫存區(建議練習使用,加深對如下幾個命令的理解):

    git add -A                    暫存區與工做區保持一致(stages All)

    git add .                       暫存區新建文件及更改文件(stages new and modified, without deleted)

    git add -u                    暫存區刪除文件及更改文件(stages modified and deleted, without new)

 注意:git add 不支持添加空文件夾,可參考 http://www.zhihu.com/question/29811994

  

  git commit

     git commot -m "<message>"     把暫存區的全部修改提交到分支,須輸入描述信息

    例如:若暫存區已加入了 1.txt 文件,提交至分支(目前是 master)  git commit -m "add 1.txt"  ;未 commit 前,git status 會提示未提交;commit 過程會有代碼顯示以下。

    

      如今版本庫變成了這樣,暫存區就沒有任何內容了:

 
      commit 提交的過程仍是比較好理解的,注意描述信息的必要性,雖然有辦法能夠省去,但不建議省。除了通用的提交,如下commit命令也較經常使用:
 
       git commot --amend                       更改以前一次commit的描述信息
 
      git commot -a -m "<message>"    把暫存區的全部被修改或者已刪除的且已經被git管理的文檔提交提交到分支,須輸入描述信息(可省略 git add 過程)
      
      大多數狀況下,咱們所作的都是在原有代碼上修改,故上述命令在實際操做過程當中很實用(可省略 git add)
      

小結

暫存區是Git很是重要的概念,弄明白了暫存區,就弄明白了Git的不少操做到底幹了什麼。

相關文章
相關標籤/搜索