• 废话

    可视化git管理用久了,这个问题也比较小众,可能是问题检索能力也下降了,试了几种方案都比较繁琐,记录下操作过程。

    正文

    现在有两个 git 仓库,如何将 a.git 迁移到 b.git/sub-app/a 目录下并保留提交历史。

    a.git

    首先操作要被迁移的 a.git

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    git clone a.git

    // 新建分支
    git checkout -b move_to_b

    // 新建对应目录
    mkdir sub-app/a

    // 手动迁移当前项目文件到 sub-app/a,不包含 .git
    // TOOD 文件mv命令

    // 提交变动
    git add .
    git commit -m "chore: move a to sub-app/a"

    // 将当前分支推送到 b.git
    // 这里可直接使用文件路径指向 b.git 所在目录
    git remote add b ../b
    git fetch b
    // 拉取 b 远程的分支, 进行合并
    git merge new_barnch --allow-unrelated-histories

    git push b move_to_b

    b.git

    1
    2
    3
    4
    5
    6
    7
    // 新建分支
    git checkout -b merge-add-sub-a

    // 将 a.git 推送的 move_to_b 合并到当前分支
    git merge move_to_b --allow-unrelated-histories

    // 合并完成后正常推送即可

    提前开香槟🍾

    🙏 如有其他简洁方案,提前感谢指教。

    相关检索参考链接