小工具知识网

当前位置: 首页 > 行业知识 > 将仓库A中的部分提交迁移到仓库B中

行业知识

将仓库A中的部分提交迁移到仓库B中

2026-10-29 21:52:43 来源:互联网转载
结论: 使用git format-patch+git am即可实现
使用场景:

���如仓库A这里有5个提交记录,commitid1, commitid2, commitid3, commitid4,commitid5

仓库B想用仓库A中提交的代码,手动改比较慢,当改动较多的时候容易漏掉某个文件,那就可以用format-patch+am

参考网站:

git format-patch

git am

如何用:
  • 找到你想迁移的代码commitid

    比如:

    情景1,我想要迁移commitid2以后的所有提交,那么需要用commid2

    情景2,我想要迁移commitid2-commitid4的提交,那么需要记住commitid2和commitid4

  • 在仓库a中,运行
    情景1git format-patch commitid2 --output-directory filename情景2git format-patch commitid2..commitid4 --output-directory filename

    (output-directory  表示将补丁文件放在指定目录而不是当前文件夹中)

    ( filename是放在仓库A外面的某个空文件夹的url , 比如D盘的test文件夹,那就是D:/test)

    结果:

    在对应文件夹下生成多个补丁文件

  • 然后仓库B中执行

     

    git am -3 filename/xxx.patch

    (逐条执行,这样如果有冲突方便解决)

  • 遇到冲突会显示patch failed

    执行如下命令可以将冲突文件显示出来

    git apply --reject filename/XXX.patch

    比如一共改了四个文件a.jsx, b.jsx, c.json, d.js,

    其中a, c文件有冲突, 那么当你执行apply命令以后,

    b.jsx和d.js最新改动会加入到git中,紧挨着a.jsx和c.json文件生成xxx.rej文件

    打开xxx.rej文件,可以看到冲突的地方

    这个时候就需要你手动去a,c文件中修改冲突

    修改完

    删掉xxx.rej文件

    然后执行

    git am --resolved
    git push
    如果遇到下面这种问题

     可以执行

    git am --skip

    然后重新  git am xxx 命令

     

    当你结束git am  别忘了退出git am状态
    ​​​​​​​git am --abort

上一篇:epic服务器怎么改?

下一篇:企业网站JSP源码解析与探索