Git整理(二):工作区和暂存区的介绍


Git和其他版本控制系统如SVN的一个不同之处就是有一个暂存区的概念,下面就来说说这个暂存区到底是什么,有什么用,在说暂存区之前还是先来说说工作区吧

工作区

工作区说白了,其实就是一个文件夹,在下图中gitdemo就是一个工作区
在这里插入图片描述

版本库

工作区有一个隐藏目录.git,这个不算是工作区,它是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
在这里插入图片描述
在这里插入图片描述

下面我们在demo.txt文件中添加两行新的内容
在这里插入图片描述
添加一个文件
在这里插入图片描述
查看一下工作区的状态
在这里插入图片描述
此时的结构图为:
在这里插入图片描述
执行git add . 命令将工作区的所有的文件添加到暂存区中
在这里插入图片描述
add之后的结构图
在这里插入图片描述
执行git commit就可以一次性把暂存区的所有修改提交到分支。
在这里插入图片描述
在这里插入图片描述

管理修改的内容

下面我们再来了解一下暂存区和工作区
在这里插入图片描述
然后执行git add 操作
在这里插入图片描述
接下来再次对文件进行修改
在这里插入图片描述
然后我们执行git commit操作
在这里插入图片描述
来看看工作区的状态,执行git status操作
在这里插入图片描述
因为我们第一次修改内容执行了add,而第二次修改的内容没有add到暂存区,所以当我们执行commit操作时,只会提交暂存区的内容,也就是第一次修改的内容,第二次修改的内容还在工作区
查看工作区和版本库中最新版本的区别可以通过 git diff HEAD – read.txt
在这里插入图片描述
那怎么提交第二次修改呢?我们可以继续git add再git commit,也可以别急着提交第一次修改,先git add第二次修改,最后再一起git commit,就相当于把两次修改合并后一块提交了

撤销管理的内容

在实际开发中,出现bug了,有些代码需要撤销,下面介绍几种撤销的场景

内容还未提交到暂存区

修改demo.txt的内容,不提交
在这里插入图片描述
此时我们修改内容之后,文件还存在工作区,此时我们想撤销之前的修改,可以执行git checkout – demo.txt
在这里插入图片描述

内容已提交到暂存区

有时候我们会将数据提交到暂存区后才发现有问题了,需要进行撤销,下面我们来看看
在这里插入图片描述
执行git reset HEAD file撤销命令
在这里插入图片描述
这时文件已经回退到了工作区,如果需要撤销到之前的修改,可以执行git checkout – demo.txt
在这里插入图片描述
可以发现修改的内容在工作区中已经被撤销了

内容提交到master

如果内容已经提交到最新版本库中,但还没有提交到远程仓库中,则我们可以通过版本回退的方式撤销。
在这里插入图片描述
这个时候我们可以执行版本回退,执行git reset --hard HEAD^
在这里插入图片描述

删除管理

在这里插入图片描述
在这里插入图片描述
接下来执行git commit -m “操作内容的描述信息”,执行删除提交操作
在这里插入图片描述

删除文件之后从版本库中找回来

在这里插入图片描述
命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

总结

工作区
我们直接编辑、修改的地方,例如就类似与我们用记事本打开一个文件,然后进行添加内容,可以直接能看得到的
暂存区(Stage 或 Index)
当我们执行git add filename,此时将数据暂时存放的区域,可在工作区和版本库之间进行数据的交流。
版本库(commit History)
将暂存区的数据提交到master版本库中去,存放已经提交的数据,当执行git push操作时,就是把这个区的数据push到远程仓库

发布了207 篇原创文章 · 获赞 87 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/zhouym_/article/details/100749701