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 add
把文件添加进去,实际上就是把文件修改添加到暂存区操作系统
第二步:git commit
提交更改,实际上就是把暂存区的全部内容提交到当前分支(建立Git版本库时,Git自动建立了master
分支; 因此,目前 git commit
就是往master
分支上提交更改;分支的概念以后章节会详细说明)版本控制
可简单理解为,须要提交的文件修改统统放到暂存区;而后,一次性提交暂存区的全部修改。下面具体说明 git add 及 git commit 操做 (有兴趣的可关注下 git add 和 commit 文件后 .git 目录的变化)指针
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 commot -m "<message>" 把暂存区的全部修改提交到分支,须输入描述信息
例如:若暂存区已加入了 1.txt 文件,提交至分支(目前是 master) git commit -m "add 1.txt" ;未 commit 前,git status 会提示未提交;commit 过程会有代码显示以下。
如今版本库变成了这样,暂存区就没有任何内容了:
小结
暂存区是Git很是重要的概念,弄明白了暂存区,就弄明白了Git的不少操做到底干了什么。