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

如何将Git仓库中所有未提交变更完整迁移至另一仓库?

无需提交迁移Git未提交变更(含重命名/新增/删除)

方法1:借助Git Stash迁移(推荐)

既然git stash能正常识别所有变更(包括重命名),用它导出的补丁能完美保留Git对文件操作的识别:

  • 在源仓库导出变更补丁:

    # 临时 stash 变更并导出补丁
    git stash push -m "temp-migrate-changes"
    git stash show -p > workspace-changes.patch
    git stash pop  # 恢复源仓库的变更状态
    

    或者直接生成stash对象的补丁(无需临时stash):

    git stash create > workspace-changes.patch
    
  • 将workspace-changes.patch复制到目标仓库,执行应用:

    git apply workspace-changes.patch
    

    执行后用git status验证,所有重命名、新增、删除操作都会被正确还原。

方法2:调整git diff参数生成兼容补丁

如果偏好直接用git diff,需要强制Git检测重命名,避免将重命名拆成「删除原文件+新增新文件」的独立操作:

  • 在源仓库生成带重命名识别的补丁:

    git diff HEAD --rename-detect > workspace-changes.patch
    

    --rename-detect参数会让Git把文件重命名识别为单一的移动操作,而非两个独立变更。

  • 在目标仓库应用补丁时,指定识别重命名指令:

    git apply --rename workspace-changes.patch
    

    这个参数会让Git解析补丁中的移动指令,正确创建新命名的文件并移除原文件,不会出现原文件变空的问题。

验证操作结果

应用补丁后,在目标仓库执行以下命令确认变更与源仓库一致:

git status

内容的提问来源于stack exchange,提问作者Jennifer M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 21:22:01