You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

「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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:52:02