情景1、如果修改了工作区某个文件的内容,想直接放弃对工作区的修改,可以使用git checkout -- fileName
(两个连字符后有个空格)
(1)、修改后的内容还没有添加到暂存区,那么撤销之后,就回到和版本库一模一样的状态了。
(2)、对文件的修改已经添加到暂存区了,然后又做了修改,但是对第二次的修改还没有添加到暂存区,那么撤销修改后就回到了和暂存区一样的状态了。
情景2、对文件的修改已经添加到暂存区,但是还没有提交,此时可以使用git reset HEAD fileName
命令撤销暂存区的修改,这时回到了情景1,
情景3、如果不但已经添加到暂存区,还已经提交到版本库中,那么版本回退。
情景4、当你删除了某个文件后,此时工作区和版本库就不一样了,如果确实要删除这个文件,通过git rm fileName
从版本库中删除该文件,删除之后提交即可;若属于误删,通过git checkout -- fileName
可以很简单把误删的文件恢复到版本库里的版本。
不知道发现没有情景1和情景4里的命令是一样的,git checkout -- fileName
表示:检查文件工作区中fileName是否和版本库和暂存区中的一致,若不一致则恢复为暂存区和版本库中状态(具体恢复为暂存区还是版本库中的状态,看具体的情况吧)。其实这是我自己瞎琢磨的,不知道对不对?