Git 如何将包含子存储库的存储库推送到新的裸存储库中,并将其拉回到另一台计算机上?
我创建了一个包含一些子存储库的Git存储库。现在,我想将这些存储库和所有子存储库推送到外部硬盘驱动器(称为e)上的新裸存储库中 之后,我想从另一台计算机上的硬盘驱动器中提取完整的存储库。 但是,我只得到空目录,没有子存储库中的文件 我已经采取了以下步骤:Git 如何将包含子存储库的存储库推送到新的裸存储库中,并将其拉回到另一台计算机上?,git,git-submodules,Git,Git Submodules,我创建了一个包含一些子存储库的Git存储库。现在,我想将这些存储库和所有子存储库推送到外部硬盘驱动器(称为e)上的新裸存储库中 之后,我想从另一台计算机上的硬盘驱动器中提取完整的存储库。 但是,我只得到空目录,没有子存储库中的文件 我已经采取了以下步骤: 创建三个子存储库: cd /d/all/sub1 git init git add . git commit -m "initial commit" cd /d/all/sub2 git init git add . git commit -
cd /d/all/sub1
git init
git add .
git commit -m "initial commit"
cd /d/all/sub2
git init
git add .
git commit -m "initial commit"
cd /d/all/sub3
git init
git add .
git commit -m "initial commit"
cd /d/all
git init
git add .
git commit -m "initial commit"
cd /d/all/sub1
git init
git add .
git commit -m "initial commit"
cd /d/all/sub2
git init
git add .
git commit -m "initial commit"
cd /d/all/sub3
git init
git add .
git commit -m "initial commit"
cd /d/all
git init
git add .
git commit -m "initial commit"
cd /e
mkdir all
cd /e/all
git init --bare
cd /d/all
git remote add origin /e/all
git push --set-upstream origin master
cd /h/test
git init
git pull /e/all
我必须如何更改步骤4和5以实现我的目标?通常情况下,子模块会有一个远程存储库。例如,假设github上有一个子模块。那么在4到5之间就可以了
git submodule add https://github.com/Mellbourn/sub4.git
git commit -m "added submodule 4"
git submodule init
git submodule update
5点以后你就可以了
git submodule add https://github.com/Mellbourn/sub4.git
git commit -m "added submodule 4"
git submodule init
git submodule update
之后,您将在test
repo的子目录sub4
中拥有一个子模块(填充了内容)
您的示例的一个问题是,子回购协议并没有真正成为合适的子模块。您正在存储库中本地创建它们。子模块的要点是,它们是您自己的回购协议之外的回购协议的复制品
子模块既不是自动的,也不是直观的。我强烈建议您。改用。本地内部/嵌套存储库没有办法吗?我发现,相对路径是可能的。所以我尝试“git submodule add./sub1”。但我不知道如何将其推送到裸存储库。@tonirush一旦正确初始化了子模块,它们将作为外部存储库中的嵌套目录重新命名。因此,相对路径是可能的。到目前为止,你的想法是正确的。您的问题是,在尝试将子存储库嵌套到外部repo中之前,应该正确初始化子存储库,最好是使用远程存储库。