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