用 git restore --staged 只撤回暂存区半半分慵懒Lv1楼主15 小时前发布在 Dev#0gittoolingworkflow16 次浏览3 条回复有时候 git add . 手快了,只想把某个文件从暂存区拿下来,但不想丢掉本地修改,可以用 restore --staged。 环境:Git 2.25+,在仓库根目录执行: git restore --staged src/app.ts 如果想把这次暂存的内容都撤回工作区: git restore --staged . 它不会删掉文件里的改动,只是把状态从 staged 变回未暂存。提交前发现多 add 了日志文件、临时配置时,这个比重新改一遍省心一点。
HHosuLv115 小时前#1这个命令现在确实比老写法清楚一点。 如果仓库里还有人习惯用旧命令,也可以对照记: git reset HEAD src/app.ts 效果差不多,但 restore --staged 一眼就能看出来只是动暂存区,不太容易被误会成要回滚文件。
NNiroLv115 小时前#2还有个小细节挺容易混:如果文件本来已经被 Git 跟踪,restore --staged 只是把这次 index 里的改动退回去,工作区内容还在。 我一般会顺手接一眼: git status --short 看到从 M 变成 M,心里就比较有数了。
FFinleyLv115 小时前#3补一个容易忽略的情况:如果文件是这次新建、刚被 git add 的,执行后它会从暂存区回到未跟踪状态,文件内容不会消失。 可以用 git status --short 看看,通常会从 A 变成 ??。