git reset 可安全撤销暂存:git reset -- 撤销单个文件,git reset 撤销全部,均保留工作区修改;默认 --mixed 模式,切勿误用 --hard。

可以用 git reset 命令把已 add 到暂存区的文件“撤回”到工作区,不改变文件内容,只取消暂存状态。
撤销单个已暂存的文件
如果只想取消某个文件的暂存,保留其修改在工作区:
- 运行
git reset HEAD --(Git 2.23+ 推荐写法) - 或简写为
git reset --(HEAD可省略) - 例如:
git reset -- README.md,执行后README.md的修改仍在,但不再出现在git status的“Changes to be committed”里
撤销所有已暂存的文件
如果想一次性清空整个暂存区,把所有 add 过的修改都退回到工作区:
- 运行
git reset HEAD或更简洁的git reset - 这不会改动任何文件内容,只是重置暂存区索引(index)为
HEAD所指的状态 -
git status会显示这些文件转为“Changes not staged for commit”
注意:别和 --hard 混淆
git reset --hard 会同时丢弃暂存区和工作区的修改,非常危险:
-
不要用
git reset --hard来撤销暂存,它会直接删掉你还没提交的本地修改 -
git reset默认是--mixed模式(重置暂存区 + 保留工作区),这才是安全撤销暂存的正确方式 - 不确定时,先执行
git status确认当前状态,再操作
不复杂但容易忽略:只要没 commit,暂存区的修改随时能用 git reset 安全撤回。











