Git学习笔记(六) Git检出

检出命令

此命令会重写工作区

该命令的实质就是修改HEAD本身的指向,不会影响分支游标。当执行此命令时,HEAD头指针被更改了,由指向一个引用(分支)变成了指向一个提交ID,分支(master)的指向没有改变,仍旧指向原有的提交ID

“分离头指针”状态:指的是HEAD头指针指向了一个具体的提交ID

用法一:git checkout [-q] [<commit>] [--] <paths>...    为避免路径和引用(或提交ID)同名而发生冲突,可以在<paths>前用--作为分隔

此用法不会改变HEAD头指针,主要用于指定版本的文件覆盖工作区中对应的文件。若省略<commit>,则会用暂存区的文件覆盖工作区的文件,否则用指定提交中的文件覆盖暂存区和工作区中对应的文件。

用法二:git checkout [<branch>]

此用法会改变HEAD头指针,之所以后面的参数写作<branch>,是因为只有HEAD切换到一个分支才可以对提交进行跟踪,否则仍然会进入“分离头指针”的状态,此状态下提交不能被引用关联到,从而可能丢失。所以此用法最主要的作用就是切换到分支,若省略<branch>则相当于对工作区进行状态检查。

用法三:git checkout [-m] [[-b | orphan] <new_branch>] [<start_point>]

此用法主要是创建和切换到新的分支,新的分支从<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 .

取消所有本地的修改(相对于暂存区),相当于用暂存区的所有文件直接覆盖本地文件,不给用户任何确认机会。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值