gpt4 book ai didi

git - 如何使用子模块克隆本地存储库?

转载 作者:太空狗 更新时间:2023-10-29 13:35:05 24 4
gpt4 key购买 nike

假设我递归地克隆了一个存储库。

$ git clone --recursive ssh://server/project/client
Cloning into 'client'...
remote: Counting objects: 191, done
remote: Finding sources: 100% (191/191)
remote: Total 191 (delta 53), reused 159 (delta 53)
Receiving objects: 100% (191/191), 27.59 KiB | 0 bytes/s, done.
Resolving deltas: 100% (53/53), done.
Checking connectivity... done.
Submodule 'gui' (ssh://server/project/client/gui.git) registered for path 'gui'
Cloning into 'gui'...
remote: Counting objects: 3213, done
remote: Finding sources: 100% (3213/3213)
remote: Total 3213 (delta 1272), reused 3107 (delta 1272)
Receiving objects: 100% (3213/3213), 47.88 MiB | 12.05 MiB/s, done.
Resolving deltas: 100% (1272/1272), done.
Checking connectivity... done.
Submodule path 'gui': checked out '7315db8d7a8b36929f7874dc5477359839ec51ce'

现在我想创建该本地存储库的本地克隆(可能在本地进行并提交更改之后)。

$ git clone --recursive client/ client_copy
Cloning into 'client_copy'...
done.
Submodule 'gui' (/home/deployer/client/gui.git) registered for path 'gui'
fatal: repository '/home/deployer/client/gui.git' does not exist
Clone of '/home/deployer/client/gui.git' into submodule path 'gui' failed

我的 .gitmodules 文件如下所示:

[submodule "gui"]
path = gui
url = ../client/gui.git

为什么会失败,我该如何解决这个问题?

最佳答案

问题出在您的 .gitmodules 上文件。子模块 url在您的项目中被定义为 super 项目存储库的相对路径,但是当克隆子模块时,它们是使用 path 放置的位置。

换句话说,git 试图从 url 中 pull 子模块。位置,但在您的本地计算机上,它们实际上位于 path位置。

要解决此问题,只需克隆本地 super 项目存储库 ( git clone /path/to/superproject ),然后进入新克隆的 .gitsubmodules并更改 url./<whatever-the-path-is> .例如,您的 gui 子模块将变为:

[submodule "gui"]
path = gui
url = ./gui

更改.gitmodules中的每个子模块变成这样,然后运行:

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

这样就可以了!

关于git - 如何使用子模块克隆本地存储库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38208748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com