网上关于这个撤销指令的教程多的数不胜数,但是在自己学习中还是遇到一些坑,在此记录下来,也给同样遇到坑的同学一点参考
先说遇到问的问题吧 在廖神的博客里 对于这个指令的解释是
但后来我在CSDN的一篇文章中见到的解释是
这就出现了两种意思 在我修改了工作区的内容后 使用 git checkout -- <file>到底是从缓存区还是版本库中还原呢 ,对此只有实践才有发言权
第一步:在管理库中添加一个版本:
第二步:在缓存区中添加一个版本:
第三步:修改工作区文档
第四步:第一次使用git checkout -- <file>:
好了这时还原的结果是从缓存区里拉取的还原,貌似CSDN的网友说的更对。别急现在还不能下结论,毕竟廖神怎么会犯这种低级错误呢
第五步:清空缓存区:
第六步:这个时候缓存区没有版本了再次使用git checkout -- <file>:
惊喜的事情发生了,工作区的版本竟然从版本库中还原了!
结论
通过这六步操作 我觉得git checkout -- <file>指令应该是从先从缓存区中拉取版本还原,如果没有再到版本库中拉取还原。在之后重新翻看廖神博客时,发现廖神在这句话的前一章对这句指令的解释是(跟我最后得出的结论一样了,毕竟commit后自然没有缓存区版本了)