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的不少操做到底干了什么。

相关文章
相关标签/搜索