一、理解三个区
在 .git 文件中,index 是暂存区,HEAD 指针指向的是 refs/heads/master 里面存放的是最新一次提交的 commit_id(是一个索引,指向的是对象库的一个对象,存放文件修改内容)
三个区:
二、版本回退操作
两个操作:
查看仓库状态:git status
显示暂存区文件和工作区文件不同之处:git diff filename
我们先改变了 readme 文件内容,用 git status 后就会发现已经修改而且还告诉我们修改内容,但是没有 commit
当我们 commit 提交修改后,用 git diff 就不会有结果,因为已经一样了。
所以现在已知工作区的文件有两个版本(内容不同):hello git 和 hello git\nhello world
版本回退命令:git reset [--soft] [--mixed] [--hard] commit_id
工作区 | 暂存区 | 版本库 | 回退选项 |
hello git\nhello world | hello git\nhello world | hello git | --soft |
hello git\nhello world | hello git | hello git | --mixed(默认) |
hello git | hello git | hello git | --hard |
版本回退原理:
所以仅仅只是修改指针的话回退速度就很快。