用法一 git checkout [-q] [<commit>] [--] <paths>...
用法二 git checkout [<branch>]
用法三 git checkout [-m] [ [-b | --orphan] <new_branch>] [<start_point>]
用法一<commit>是可选的,如果省略则相当于从暂存区(index)进行检出
重置的默认值是HEAD,而检出的默认值是暂存区。
重置一般用于重置暂存区 ( 除非使用--hard参数,否则不重置工作区 ),
检出主要用于覆盖工作区 (如果<commit>不省略,也会替换暂存区中相应的文件)
用法一(包含了路径<paths>)不会改变HEAD头指针,主要用于指定版本的文件覆盖工作区中对应的文件。
如果省略<commit>,则会用暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区和工作区中对应的文件。
用法二(不使用路径<paths>)则会改变HEAD头指针,主要用于切换到分支,省略<branch> 则相当于对工作区进行状态检查。
之所以参数写作<branch>,是因为只有HEAD切换到一个分支才可以对提交进行跟踪,否则仍然会进入“分离头指针”的状态。
在“分离头指针”状态下的提交不能被引用关联到,从而可能丢失。
用法三主要是创建和切换到新的分支(<new_branch>),新的分支从<start_point>指定的提交开始创建。
git checkout branch
检出branch分支,完成上述1,2,3
更新HEAD以指向branch分支,以及用branch指向的树更新暂存区和工作区
git checkout
git checkout HEAD
汇总显示工作区、暂存区与HEAD的差异
git checkout -- filename
用暂存区中filename文件 覆盖工作区中的相应文件,相当于取消上次执行 git add filename以来(如果执行过)的本地修改
git checkout --. 或写作 git checkout .
用暂存区的所有文件直接覆盖本地文件
git checkout branch -- filename
维持HEAD的指向不变。
用branch所指向的提交中的filename替换暂存区和工作区中相应的文件。