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

如何将Git中未提交的变更迁移并切换到指定提交?

解决Git未暂存变更切换旧提交并迁移变更的方案

无需创建分支

完全不用创建分支就能完成需求,下面是两种更简便的实用方案:

方案1:使用git stash(推荐)

这是Git原生的临时存储变更工具,步骤简洁:

  1. 临时存储当前未暂存的变更:
    git stash push -m "临时存储新增目录变更"
    

    注:如果嵌套的子Git仓库存在未提交变更,git stash默认不会处理,需单独对子仓库操作;若子仓库状态干净,可直接忽略此提示。

  2. 切换到目标旧提交:
    git checkout <旧提交哈希/标签>
    
  3. 将临时存储的变更恢复到当前工作区:
    git stash pop
    
    恢复后对应的stash记录会自动删除,无需额外清理。若后续想放弃这些变更,直接执行git stash drop即可删除临时存储记录。

方案2:临时目录中转(你提到的方法)

该方法操作直观,适合对git stash不太熟悉的场景:

  1. 创建临时目录:
    TMP_DIR=$(mktemp -d)
    
  2. 将新增的目标目录移至临时目录:
    mv <你的新增目录名> "$TMP_DIR"
    
  3. 切换到旧提交:
    git checkout <旧提交哈希/标签>
    
  4. 将临时目录中的目标目录移回当前工作区:
    mv "$TMP_DIR/<你的新增目录名>" .
    
  5. 手动清理临时目录(可选,系统会自动清理临时文件,手动删除更稳妥):
    rm -rf "$TMP_DIR"
    

方案对比

  • git stash:Git原生工具,步骤更少,无需手动处理文件移动,适合大多数常规场景。
  • 临时目录中转:操作逻辑直观,不用担心stash记录混淆,适合追求可视化操作的用户。

内容的提问来源于stack exchange,提问作者Galladite

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:57:35