如果我对工作树进行了更改并且尚未提交,并且我想恢复我所做的更改,那么
是否存在差异git reset --hard HEAD
和
git checkout .
答案 0 :(得分:29)
git checkout -- .
显然只能在当前目录(及其子目录)上运行,git reset --hard
将在完整的工作树上运行。
git checkout -- .
只会更新工作树并保留已经暂存的文件,而git reset --hard
会将索引和工作树与HEAD提交相匹配。
与refspec一起使用时:
reset
会将当前分支头设置为给定的提交(并匹配索引和工作树)checkout
将切换到该分支,保持本地更改不变。答案 1 :(得分:5)
这些答案都很好。我想补充一点,如果你删除了已暂存但尚未提交的文件,那么单独使用git checkout .
就不会将删除的文件带回工作区。一个git reset --hard
会。