检出命令
此命令会重写工作区
该命令的实质就是修改HEAD本身的指向,不会影响分支游标。当执行此命令时,HEAD头指针被更改了,由指向一个引用(分支)变成了指向一个提交ID,分支(master)的指向没有改变,仍旧指向原有的提交ID
“分离头指针”状态:指的是HEAD头指针指向了一个具体的提交ID
用法一:git checkout
此用法不会改变HEAD头指针,主要用于指定版本的文件覆盖工作区中对应的文件。若省略
用法二:git checkout
此用法会改变HEAD头指针,之所以后面的参数写作
用法三:git checkout [ <new_branch>]
此用法主要是创建和切换到新的分支,新的分支从<start_point>指定的提交开始创建。新分支与master分支没什么实质的不同,都是在refs/heads命名空间下的引用。
$ git checkout branch
检出branch分支,更新HEAD以指向branch分支,以及用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 .
取消所有本地的修改(相对于暂存区),相当于用暂存区的所有文件直接覆盖本地文件,不给用户任何确认机会。