Git将包含所有子模块的repo镜像到另一个repo

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git将包含所有子模块的repo镜像到另一个repo相关的知识,希望对你有一定的参考价值。

我使用命令将https://github.com/boostorg/boost.git镜像到我自己的存储库:

git clone --recursive https://github.com/boostorg/boost.git
cd boost
git push --mirror 'URLOfMyOwnRepo'

为了镜像所有的子模块。但是,它没有达到我预期的方式。

基本上我想要做的是N对1镜像,所以我可以在不同的分支/标签中查看我自己的repo上的源代码。

我试过了:

git clone --mirror --recursive

git submodule init git submodule sync git submodule update --init --recursive

即使我在本地计算机上获得了这些子模块,我仍然无法将它们镜像到我的存储库。

答案

我刚刚经历了相同的经历,并在从github进行了一次递归克隆的加速后陷入困境。

最后,我创建了以下bash脚本来跳转到每个子模块文件夹并手动将镜像推送到我的私有gitlab repo。然后当我从我的私人gitlab尝试git克隆时,主回购似乎找到了每个子模块而没有任何其他配置在他们的新url。

#!/bin/bash
# This file is meant to help a user mirror the submodule-rich github repo 'boost' on our private gitlab
# start in boost root directory of boost cloned with:
# git clone --recursive https://github.com/boostorg/boost.git

myhost=example.com

git submodule status | awk '{print $2}' > boost_git_submodules_list.txt
while read line; do
    cd $line
    module=`cut -d'/' -f2 <<< $line`
    echo "git push --mirror git@$myhost:boostorg/$module.git"
    git push --mirror git@$myhost:boostorg/$module.git
    cd -
done < boost_git_submodules_list.txt

它需要一段时间,当它们推动时有一些破损的参考,但我希望这有帮助!

以上是关于Git将包含所有子模块的repo镜像到另一个repo的主要内容,如果未能解决你的问题,请参考以下文章

Git 子模块命令在 Windows 10 上非常慢

使用 git 子模块恢复 Nuget 包

如何将 git 子模块推送到 AWS Elastic Beanstalk?

Git:将子模块文件检出到单个目录中

子模块内的 Git 子模块(嵌套子模块)

Xcode Bots 不会将 git 子模块更新为指定的提交