Git 撤销 git add 操作指南
什么时候用
已经执行了 git add,但还没有 git commit,现在想把文件从暂存区拿出来,同时保留工作区里的修改。
先判断当前状态
git status --short
git diff --cached --name-only
git status --short适合先确认哪些文件已经进入暂存区。git diff --cached --name-only只列出已暂存、准备进入下一次提交的文件。
推荐命令
| 场景 | 推荐命令 | 结果 |
|---|---|---|
| 撤销单个文件的暂存 | git restore --staged <file> | 文件从暂存区移出,工作区修改保留 |
| 撤销多个文件的暂存 | git restore --staged file1 file2 | 多个文件一起移出暂存区 |
| 撤销当前目录下全部暂存 | git restore --staged . | 批量取消暂存 |
常见场景
只撤销一个文件
git restore --staged mock.png
撤销多个文件
git restore --staged README.md src/app.js
撤销全部已暂存内容
git restore --staged .
如果某个文件原本是新文件,撤销暂存后它会回到“未跟踪文件”状态,而不是被删除。
兼容写法
旧写法通常是:
git reset HEAD <file>
git reset HEAD
它们依然可用,但现在更推荐 git restore --staged,因为语义更直接,读起来也更清楚。