原文的一些错误导致评论区炸天了
Topic sourcegit checkout -- test.txt 针对的是rm test.txt 如果是git rm test.txt, 参看之前的版本回退, git reset -- hard XXXXXXX
#2楼说得大概就是廖老师想表达的
##原文第一种情况指的是确实想删除所以用了git rm,并没有说第二种情况是通过git rm 删除的,指的是误删除,联系之前讲的文章应该知道工作区和暂存区都删除的情况可以通过git reset head回滚。而本节最后提了小节也做了说明了,只要提交到版本库中,是能回复到最新版本的。一楼指的命令大概是后面廖老师要讲的命令。此节无争议
2楼说得大概就是廖老师想表达的
原文第一种情况指的是确实想删除所以用了git rm,并没有说第二种情况是通过git rm 删除的,指的是误删除,联系之前讲的文章应该知道工作区和暂存区都删除的情况可以通过git reset head回滚。而本节最后提了小节也做了说明了,只要提交到版本库中,是能回复到最新版本的。一楼指的命令大概是后面廖老师要讲的命令。此节无争议
评论区各位都看的很仔细,我刚操作的时候也觉得不对,其实自己看看 廖老师表达的没错,误删除用checkout -- test.txt没问题,如果提交到版本库了就得Reset了。只不过廖老师排版的时候比较随意,实际上他说的是两种情况,并不是线性操作。这种地方不要纠结了。
- 1
大熊原子笔
原文有误,因为使用了
git rm test.txt
,是同时删除了工作区的test.txt
文件,并且将删除的动作提交到了暂存区。git checkout -- test.txt
表示从暂存区中把test.txt
拎出来,覆盖到工作区。但是,此时暂存区也已经没有了test.txt
,是无法还原覆盖到工作区的。正确的做法是
git checkout HEAD -- d1.txt
或git checkout HEAD d1.txt
廖老师也是人不是神,会笔误犯错。觉得有疑问的时候,可以参考 ProGit