如果修改了一份文件,并没有add
,也就是并没有放到暂存区,想要撤销掉对文件的修改,也就是丢掉工作区的修改,可以使用如下命令
git checkout -- 文件名
注意要带上
--
,如果不带的话,就变成了切换分支的命令,之后分支管理还会遇到git checkout
。虽然即使不加--
大多数也没问题,但是如果跟分支重名就有问题了,所以还是推荐加上,规范的使用才不会出问题哦。
全部撤销
git checkout .
那如果已经执行了git add
添加到暂存区了怎么办呢?还记得之前讲的git reset
么
git reset HEAD 文件名
这样就可以把暂存区的回退了。这时候再执行
git checkout -- 文件名
这样就把工作区的也回退了。
细心的同学,学的比较扎实的同学可能会想到一个牛逼的命令,直接完成上面的两步:git reset --hard HEAD 文件名
,首先恭喜你,对Git已经有不错的理解了,但是很遗憾你,这个并没有这个命令,不妨执行一下看看:
git reset --hard HEAD README.md
fatal: Cannot do hard reset with paths.
提示说不能带着路径执行hard reset,死心了吧,乖乖两步走吧,哈哈。当然如果你所有的修改都想要撤销的话,大可使用 git reset --hard HEAD
。这样,工作区、暂存区的所有内容都恢复到当前分支的HEAD
了。
本节主要讲了git checkout -- 文件名
撤销修改的用法,同时也对 git reset
有了更深入的了解,需要再细细体味这两个命令做的事情,对比他们所做的事情有哪些相同的地方,哪些不同的地方,哪些地方可以互相替代。