git1HEAD_0">git进阶–1—HEAD、工作树和索引之间的区别与联系
1. HEAD
-
git中可以有很多的分支,本质都是一个指向commit对象的可变指针,HEAD是一个特别的指针,始终指向正在工作中的本地分支的指针,一句话,你当前处在哪个分支,HEAD就指向那个分支的分支指针
-
比如第一开始我们处在master分支,HEAD就指向master分支指针
-
如果我们git checkout login-part切换到login-part分支,那么HEAD则指向login-part分支指针
-
如果我们git commit一下,login-part分支指针会指向最新创建的提交,但HEAD还依旧指向login-prt分支指针,也就是说,分支指针指向会变,但HEAD不会随着状态改变而改变,只能是切换
-HEAD存储在.git/HEAD文件中,我们打开可以看到记录
ref: refs/heads/login-part
2. 工作树(工作区)和索引(暂缓区)
- 工作树,也就是工作区域,就是我们实际操作的文件目录
- 索引,也就是暂缓区,我们把工作区内容准备提交本地库时,需要一个中间人为工作区内容添加所以索引,在GIt执行提交的时候,不是直接保存工作树的状态,而是保存中间索引区域的状态,所以我们要先把工作区内容添加到所以区域。
- 添加索引的好处是避免一些重复提交