我创建了一个包含一些子库的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 -m "initial commit"
cd /d/all/sub3
git init
git add .
git commit -m "initial commit"
创建包含3个子存储库的存储库:
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以实现目标?
答案 0 :(得分:1)
通常,您将拥有子模块的远程存储库。例如。假设github上有一个子模块。然后在4到5之间你会做
git submodule add https://github.com/Mellbourn/sub4.git
git commit -m "added submodule 4"
5岁之后你会做
git submodule init
git submodule update
之后,您将在sub4
repo的子目录test
中拥有一个子模块(填充内容)。
您的示例的一个问题是您的子回购并没有真正成为正确的子模块。您在存储库中本地创建它们。子模块的重点在于它们是repos 在你自己的回购中的复制品。
子模块既不自动也不直观。我强烈建议您read about them。