「Discard all changes」与「Stash all changes」的区别及Git CLI复现方法
撤销Vite初始化操作:Discard与Stash的区别及CLI实现
两个操作的核心区别
- Discard all changes(丢弃所有变更):直接清除工作区所有未暂存修改,将文件恢复到当前Git HEAD提交的状态。这些变更会被永久删除,Git本身无法找回,完全符合你「不留下Git日志、不保存变更」的需求,适合确定修改无保留价值的场景。
- Stash all changes(暂存所有变更):把工作区未暂存修改临时存入Git的stash缓存栈,工作区同步恢复到HEAD状态。变更并未被删除,之后可以通过命令恢复。该操作会留下stash记录,但不会生成提交日志,适合临时隐藏修改、之后还需要复用的场景。
用Git CLI复现对应操作
复现「Discard all changes」:
Git 2.23及以上版本推荐命令:git restore .旧版本可使用:
git checkout .两个命令都会将工作区所有文件恢复到当前HEAD版本,彻底清除未暂存变更。
复现「Stash all changes」:
直接执行暂存命令:git stash push(简写为
git stash也可)
若之后需要恢复变更,可执行:git stash pop # 恢复变更并从stash栈中移除记录 # 或 git stash apply # 恢复变更但保留stash栈中的记录
内容的提问来源于stack exchange,提问作者Felkru
相关产品推荐
相关产品推荐

