git权威指南总结二:git暂存区详解

时间:2024-04-01 13:29:49

git三个存放区域

git总共分为三个存放区域:git工作区域、暂存区域和HEAD,其中,工作区域存放本地修改,暂存区域存放的是保存且未提交的修改,版本库保存的是已提交的修改


git三个区域之间的相互转换关系图

git权威指南总结二:git暂存区详解

git三个区域的描述

工作区域:任何一个本地目录都可以成为一个工作目录,对目录中的文件的所有修改(增删改查)都会影响到工作区域目录
版本库:这里为什么不讲HEAD和暂存区呢?是因为他们两个区域都是属于版本库的,当在任何一个本地目录中右键git bash here进行git命令行模式并且输入命令git init就会在当前目录下生成.git隐藏目录,该目录就是版本库
暂存区域:在版本库中标记为index的区域是暂存区,该区域存放的是使用git add命令保存所有修改并且未提交时的这一段修改数据
HEAD:在版本库中标记为master的区域就是HEAD区域,该区域存放的是使用git commit命令提交修改后的所有修改数据


git三个区域之间的转换

可以参考上面的图片中的对应转换条件命令,这里简单的进行介绍
在添加了一个文件index.txt之后(顺序)
1.在未使用任何命令时,在index.txt文件中只会存在于工作区域中,而在版本库中是不存在该文件的
2.使用git add index.txt(或者git add .)命令保存修改后,index.txt文件将会存在于index分支中,也就是在暂存区域中将会生效index.txt文件的修改(新增)
3.使用git commit -m “commit index.txt”命令提交修改后,index.txt文件将会存在于master分支中,也就是在HEAD区域中将会生效index.txt文件的修改(新增)
在添加了一个文件index.txt之后(逆序)
1.使用git checkout – index.txt命令可以将暂存区域中的index.txt文件的修改重置,也就是重置git add index.txt(或者git add .)命令
2.使用git reset –HEAD HEAD(HEAD^/HEAD^^)命令可以将HEAD区域中的指定前面第几次提交,也就是重置git commit -m “commit index.txt”命令


git三个区域之间的差异比较

工作区域和暂存区域的比较:使用 git diff命令可以查看工作区域和暂存区域之间的差异
工作区域和HEAD区域的比较:使用 git diff HEAD命令可以查看工作区域和HEAD区域的差异
暂存区域和HEAD区域的比较:使用 git diff –cached命令可以查看暂存区域和HEAD区域的差异
也可以对指定文件进行差异比较,比如: git diff index.txt就是比较工作区域和暂存区域中的index.txt文件差异


参考文献

git权威指南一书
理解git暂存区
git暂存区的理解