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


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

 

 

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

  回顧上一章節版本庫創建: 先將 D:盤下的 learngit 整個文件夾刪除,然后創建空的 Git 版本庫。

  

  工作區 和  版本庫

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

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

    回顧上一章節,我們把文件往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>   把單一指定文件加入至暫存區(須加后綴格式)

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

 

    

    若修改了該 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的很多操作到底干了什么。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM