HEAD:头指针,是当前工作区的基础版本
看到当前处于的分支:git branch -v
分离头指针:git checkout 4902dc3^
处于分离头指针状态,可以检查、测试和提交,而不影响任何分支。通过执行另外的一个checkout检出指令会丢弃在此状态下的修改和提交
挽救分离头提针
git branch -v
git merge acc2f69
深入了解git checkout命令
git checkout:是git最常用的命令,但也是一个很危险的命令,因为这条命令会重写工作区
1、git checkout [-q] [<commit>] [--] <paths>
<commit>可选 的如果省略则从暂存区(index)进行检出
重置:一般用于重置暂存区(除非使用--hard参数)
检出:主要用于覆盖工作区
不会改变HEAD头指针,主要用于指定版本的文件覆盖工作区中对应的文件。
如果省略<commit>,则会用暂存区的文件覆盖工作区的文件,
否则用提定提交中的文件覆盖暂存区和工作区中对应的文件。
2、git checkout [<branch>]
会改主HEAD头指针,
参数写件<branch>。是因为只有HEAD切换到一个分支才可以对提交进行跟踪,否则会进入“分离头指针”的状态。“在分离头指针”状态下的提交不能被引用关联到,从而可能丢失
3、git checkout [-m] [[-b|--orphan] <new_branch>] [<start_point>]
创建和切换到新的分支(<new_branch>),新的分支从<start_point>提定的提交开始创建
git checkout branch
检出branch分支,完成1,2,3
1、更新HEAD指向branch分支
2、用branch指向的树更新暂存区和工作区
git checkout git checkout HEAD
汇总显示工作区、暂存区与HEAD的差异
git checkout --filename
用暂存区中filename文件来覆盖工作区的filename文件。相当于取消自上次执行git add filename以来(如果执行过)的本地修改
git checkout branch --filename
维持HEAD的指向不变。用branch所指向的提交中的filename替换暂存区和工作区中相应的文件
注意:会将暂存区和工作区中的filename文件直接覆盖
git checkout -- . git checkout .
注意:git checkout 命令后的参数为一个点(“.") 这条命令最危险 会取消所有本地的修改(相对于暂存区)。相当于用暂存区的所有文件直接覆盖本地文件,不给用户任何确认的机会