git checkout . 在项目内任何位置执行 效果都是等价的。
git checkout . 的作用是:
把当前工作目录下所有已追踪(tracked)文件的本地更改全部还原为最近一次 commit 的状态。
也就是说:
- 撤销你还没 add/commit 的所有代码和文件内容修改(不包括新建的未被 git 跟踪的文件)。
- 只是还原内容,不会切换分支,也不会删除分支。
- 不会影响还未 add 到 git 的新文件,也不会移除被 ignore 的文件。
举例说明
假设你有如下情况:
- 你在
main.js里写了一些新代码,还没git add或 commit。 - 你修改了
README.md,但没提交。 - 你新建了一个
temp.txt文件,还没用git add跟踪。
这时输入:
git checkout .
效果是:
main.js和README.md的修改会被全部还原为上一次 commit 的状态。temp.txt(未被 git 跟踪的新文件)不会被删除或修改。
适用场景
- 想要放弃所有未提交的本地修改,快速恢复到最新 commit 状态。
- 常用于“代码改乱了,想全部回到上次保存点”的情形。
注意事项
- 这个操作无法还原被移除的文件,只还原“内容”。
- 若有重要更改请先备份,因为撤销后不可恢复。
- 如果你想连未跟踪文件一块清理,可以配合
git clean -fd使用。
总结口诀
git checkout .:还原所有已追踪文件的内容为最新 commit 状态
如需撤销指定文件,可用 git checkout 文件名
如需撤销所有内容和未追踪文件,可用:
git reset --hard
git clean -fd