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

如何在不提交代码的情况下将Git未提交变更迁移至另一台开发机

无需提交未完成代码,迁移Git未提交变更的两种方法

这问题我太熟了!不想在BitBucket留下半成品代码的提交记录,还能把A机的未提交变更(包括编辑的文件和新创建的文件)移到B机,Git有两个非常实用的办法,我给你一步步讲明白:

方法一:用Git Stash导出补丁(推荐,支持新增文件)

这个方法能完美覆盖已编辑文件+新创建的未跟踪文件,是最稳妥的方案:

  • 在开发机A的仓库目录下,把所有变更(包括未跟踪的新文件)暂存到stash里,加个备注方便识别:

    git stash push -u -m "temp-migration-stash"
    

    这里-u参数是关键,它会把未跟踪的新文件也一起存进stash里,不然默认只处理已跟踪的文件。

  • 把这个stash导出成补丁文件:

    git stash show -p stash@{0} > migration.patch
    

    stash@{0}指的是最新创建的那个stash,如果之前有其他stash,记得改成对应的序号(比如stash@{1})。

  • 把生成的migration.patch文件传到开发机B的仓库目录下,用你常用的工具就行——比如scp、FTP,甚至传微信都行(只要文件不大)。

  • 切换到开发机B的仓库目录,应用这个补丁:

    git apply migration.patch
    
  • 检查一下:看看文件编辑内容、新文件是不是都同步过来了,没问题的话,回到开发机A可以把临时stash删掉(留着也行,看你需求):

    git stash drop stash@{0}
    

方法二:用Git Diff生成补丁(适合仅已跟踪文件变更)

如果你的变更只有已跟踪文件的编辑,没有新创建的文件,用这个方法更简单:

  • 在开发机A的仓库目录下,生成变更补丁:

    • 只有未暂存的变更:git diff > migration.patch
    • 只有已暂存的变更:git diff --cached > migration.patch
    • 既有暂存又有未暂存的变更:git diff > migration.patch && git diff --cached >> migration.patch
  • 同样把migration.patch传到开发机B的仓库目录。

  • 在开发机B应用补丁:

    git apply migration.patch
    

注意事项

  • 确保两台机器的仓库已经拉取了最新版本(你已经提到这点啦,完美),不然补丁可能会冲突。
  • 如果应用补丁时提示冲突,Git会告诉你哪些文件有问题,手动修改冲突部分后继续就行。
  • 要是用Windows机器传输补丁文件,注意一下换行符的问题——不过Git的apply命令一般会自动处理,不用太担心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:41:21