Git安装完成之后,在不使用中央库的状况下,本地机器就可以用来进行代码控管。使用`git init`命令就对将当前目录进行控管了。这个命令会在该目录下产生一个.git 的隐藏文件夹。 Git中的常见的概念和术语有: * Working Directory:工作目录、工作区 * Stage: 暂存区,缓存区 * Repository:库, 版本库 ## 工作区 工作区就是本地工作的目录, 就是使用使用git init初始化控管的目录,但是不包括 .git的隐藏目录。 ## 版本库 版本库就是 .git 的隐藏目录,.git 的隐藏目录是Git用来进行版本控管的目录, 相关的一些版本记录以及改动都在这个目录中。在使用中,这个目录的大小往往比控管源码本身要大。 ## 暂存区 暂存区也叫做缓存区。 英文常见叫做Stage , 也有称作Index的。 这是Git和SVN,Perforce等其他版本控管工具的一个比较大的不同之处。 看一张图: ![](https://box.kancloud.cn/70b7902ffd7556eea33d145f429ae0ac_458x234.png) 版本库包括两个部分:缓存区和代码库 * 工作区中的文件可以添加到缓存区(git add) * 暂存区的文件可以提交到本地库(git commit),每次提交会产生一个唯一的版本号。 * 暂存区的文件也可以撤回到工作区。(git reset HEAD – filename ) ## 工作流程 1. 初始之后,工作区、暂存区和本地库的内容是相同的 2. 工作区改动后,就与暂存区和本地库不一致了,Git知道这些文件被改过,将文件设置为modified(Unstaged files) 3. 执行git add后,会将这些文件加入缓存区。但是与本地库还是不一样 4. 执行git commit后,将暂存区内容提交到本地库。提交后三者又保持了一致。 ## 备注 * State的暂存区和git stash的暂存的位置是不一样的 https://img-blog.csdnimg.cn/img_convert/287e457d265cfd202e57179c2d8f2845.png