### 2.2.2 .git/index 是包含索引的目录树,这个目录树记录了文件名,文件等状态信息 ![版本库](https://lsky.mhrooz.xyz/2024/08/15/cde4b123b19fe.png) `HEAD`指向当前的分支,图中的master中有一个git独特的存储方式,可以在不同的commit之间切换. master就是一个分支 git add就是把工作去的内容先加到暂存区,分支还没有被更改 如果想更改分支里的内容,就要commit中 `git rm --cached `从暂存区中删除文件 `git reset HEAD` 替换暂存区为HEAD指向的分支的内容(清除暂存区) `git checkout -- ` 从暂存区中拿出文件替换工作区的内容 `git checkout HEAD .`或者是`git checkout HEAD `用分支中的文件替换暂存区和工作区的文件 ### 2.2.3 `git ls-tree`查看HEAD指向的目录树 `git ls-files`查看暂存区的目录树 `git diff`比较暂存区和工作区的不同 `git diff HEAD`比较HEAD分支和工作区的不同 `git diff --cached` 比较暂存区和HEAD分支的不同