git三个区
在初始化git版本库之后会生成一个隐藏的文件 .git,可以将该文件理解为git的版本(repository),而我们自己建立的项目文件夹即工作区(working directory),在.git文件夹里面还有很多文件,其中index文件就是暂存区(stage),同事git还生成了一个分支master以及指向该分支的指针head。
例如我们打开开发环境如idea,里面的内容即工作区的内容,在工作区里面有的代码以及配置文件等我们需要提交到版本库里面,最终是到了分支master上面,暂存区只是一个临时保存修改文件的地方。
工作区
工作区(Working Directory) 是我们直接编辑的地方。
暂存区(Stage/Index)
数据暂时存放的区域,可在工作区和版本库之间进行数据的友好交流。
- 暂存区只是一个简单的索引文件。
- 暂存区这个索引文件里面包含的是文件的目录树,像一个虚拟的工作区,在这个虚拟工作区的目录树中,记录了文件名、文件的时间戳、文件长度、文件类型以及最重要的SHA-1值,文件的内容并没有存储在其中,所以说 它像一个虚拟的工作区。
- 索引指向的是.git/objects下的文件。
- 暂存区的作用:除非是绕过暂存区直接提交,否则Git想把修改提交上去,就必须将修改存入暂存区最后才能commit。每次提交的是暂存区所对应的文件快照。
版本库(commit History)
存放已经提交的数据,push的时候,就是把这个区的数据 push到远程仓库了。
#比较的是工作区和暂存区的差别
git diff
#比较的是暂存区和版本库的差别
git diff --cached
#可以查看工作区和版本库的差别
git diff HEAD
常用概念和命令
整理于processon
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。