如何克隆git存储库,以便它也克隆其子模块?
运行gitclone$REPO_URL只会创建空的子模块目录。
如何克隆git存储库,以便它也克隆其子模块?
运行gitclone$REPO_URL只会创建空的子模块目录。
当前回答
克隆存储库时,可以使用--recursive标志。此参数强制git克隆存储库中所有已定义的子模块。
git clone --recursive git@repo.org:your_repo.git
克隆后,有时子模块分支可能会发生更改,因此在其之后运行以下命令:
git submodule foreach "git checkout master"
其他回答
我在GitHub存储库中遇到了同样的问题。我的帐户缺少SSH密钥。该过程是
生成SSH密钥向GitHub帐户添加新的SSH密钥
然后,您可以使用子模块克隆存储库(gitclone--递归YOUR-git-REPO-URL)
or
运行gitsubmodule init和gitsubmodule update以获取已克隆存储库中的子模块。
[快速回答]
您可以使用此命令克隆包含所有子模块的repo:
git clone --recursive YOUR-GIT-REPO-URL
或者,如果您已经克隆了项目,则可以使用:
git submodule init
git submodule update
如果子模块被添加到分支中,请确保将其包含在克隆命令中。。。
git clone -b <branch_name> --recursive <remote> <directory>
1.git子模块初始化2位子模块更新
或者可能git存储-ugit拉动原点主机数字存储p
我建议:
# - git submodule init initializes your local configuration file to track the submodules your repository uses, it just sets up the configuration so that you can use the git submodule update command to clone and update the submodules.
git submodule init
# - git submodule update --init initializes your local configuration file and clones the submodules for you, using the commit specified in the main repository.
# note, command bellow will not pull the right branch -- even if it's in your .gitmodules file, for that you need remote. Likely because it looks at the origin (pointer to remote) in github for the available branches.
# note, bellow pulls the submodules if you didn't specify them when cloning parent project, ref: https://youtu.be/wTGIDDg0tK8?t=119
git submodule update --init
如果您有子模块的特定分支,请将其更改为:
# - git submodule init initializes your local configuration file to track the submodules your repository uses, it just sets up the configuration so that you can use the git submodule update command to clone and update the submodules.
git submodule init
# - The --remote option tells Git to update the submodule to the commit specified in the upstream repository, rather than the commit specified in the main repository.
#git submodule update --init --remote
git submodule update --init --recursive --remote meta-dataset
对于测试的完整示例:
# decided against this because it seems complicated
# - note to clone uutils with its submodule do (cmd not tested):
cd $HOME
git clone --recurse-submodules git@github.com:brando90/ultimate-utils.git
# - git submodules
cd $HOME/diversity-for-predictive-success-of-meta-learning
# - in case it's needed if the submodules bellow have branches your local project doesn't know about from the submodules upstream
git fetch
# -- first repo
# - adds the repo to the .gitmodule & clones the repo
git submodule add -f -b hdb --name meta-dataset git@github.com:brando90/meta-dataset.git meta-dataset/
# - ref for init then update: https://stackoverflow.com/questions/3796927/how-do-i-git-clone-a-repo-including-its-submodules/3796947#3796947
#git submodule init
#git submodule update
# - git submodule init initializes your local configuration file to track the submodules your repository uses, it just sets up the configuration so that you can use the git submodule update command to clone and update the submodules.
git submodule init
# - git submodule update --init initializes your local configuration file and clones the submodules for you, using the commit specified in the main repository.
# note, command bellow will not pull the right branch -- even if it's in your .gitmodules file, for that you need remote. Likely because it looks at the origin (pointer to remote) in github for the available branches.
# note, bellow pulls the submodules if you didn't specify them when cloning parent project, ref: https://youtu.be/wTGIDDg0tK8?t=119
git submodule update --init
# - The --remote option tells Git to update the submodule to the commit specified in the upstream repository, rather than the commit specified in the main repository.
#git submodule update --init --remote
git submodule update --init --recursive --remote meta-dataset
# - check we are using the right branch https://stackoverflow.com/questions/74998463/why-does-git-submodule-status-not-match-the-output-of-git-branch-of-my-submodule
git submodule status
cd meta-dataset
git branch # should show hdb
cd ..
# pip install -r $HOME/meta-dataset/requirements.txt
# -- 2nd repo, simplified commands from above
git submodule add -f -b hdb --name pytorch-meta-dataset git@github.com:brando90/pytorch-meta-dataset.git pytorch-meta-dataset/
git submodule init
git submodule update --init --recursive --remote meta-dataset
# - check it's in specified branch
git submodule status
cd pytorch-meta-dataset
git branch # should show hdb
cd ..
# pip install -r $HOME/pytorch-meta-dataset/requirements.txt