如何将包含子存储库的存储库推送到新的裸存储库并将其拉回到另一台计算机上?

时间:2015-02-02 10:10:19

标签: git git-submodules

我创建了一个包含一些子库的Git存储库。现在我想将所有子存储库中的存储库推送到外部硬盘驱动器上的新裸存储库(称为e)。

之后,我想从该硬盘驱动器中拉出另一台计算机上的完整存储库。 但是,我只获得没有来自子存储库的文件的空目录。

我已采取以下步骤:

  1. 创建三个子存储库:

    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"
    
  2. 创建包含3个子存储库的存储库:

    cd /d/all
    git init
    git add .
    git commit -m "initial commit"
    
  3. 在外部驱动器上创建一个新的裸存储库

    cd /e
    mkdir all
    cd /e/all
    git init --bare
    
  4. 将存储库推送到新的裸存储库

    cd /d/all
    git remote add origin /e/all
    git push --set-upstream origin master
    
  5. 从外部硬盘驱动其他计算机上的所有内容

    cd /h/test
    git init
    git pull /e/all
    
  6. 我如何更改步骤4和5以实现目标?

1 个答案:

答案 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