Discuss / Git / 原文的一些错误导致评论区炸天了

原文的一些错误导致评论区炸天了

Topic source

另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删> 的文件恢复到最新版本:

$ git checkout -- test.txt

原文有误,因为使用了git rm test.txt,是同时删除了工作区的test.txt文件,并且将删除的动作提交到了暂存区。

git checkout -- test.txt 表示从暂存区中把test.txt拎出来,覆盖到工作区。但是,此时暂存区也已经没有了test.txt,是无法还原覆盖到工作区的。

正确的做法是 git checkout HEAD -- d1.txtgit checkout HEAD d1.txt

廖老师也是人不是神,会笔误犯错。觉得有疑问的时候,可以参考 ProGit

__hello-cc__

#2 Created at ... [Delete] [Delete and Lock User]

git 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回滚。而本节最后提了小节也做了说明了,只要提交到版本库中,是能回复到最新版本的。一楼指的命令大概是后面廖老师要讲的命令。此节无争议

还是建议弄清楚 git rm file 和 rm file的区别

评论区各位都看的很仔细,我刚操作的时候也觉得不对,其实自己看看 廖老师表达的没错,误删除用checkout -- test.txt没问题,如果提交到版本库了就得Reset了。只不过廖老师排版的时候比较随意,实际上他说的是两种情况,并不是线性操作。这种地方不要纠结了。

wuli_jige

#7 Created at ... [Delete] [Delete and Lock User]

回顾上一节所讲,个人理解为 rm test.txt 就相当于 “撤销工作区的修改” 而 git rm test.txt 就相当于 先从暂存区回到工作区,然后再进行撤销即可。

rm test.txt 修改的是工作区 git rm test.txt是把版本库里的替换到工作区

viper1090

#9 Created at ... [Delete] [Delete and Lock User]

没错,是你理解错了。廖老师说的两种情况是针对rm test.txt指令执行后说明的哟


  • 1

Reply