我有一个顶级项目,大约有 10 个子模块和一些嵌套的子模块。
./top-project/
./top-project/module-a
./top-project/module-b
...
一些子模块有一个经典的 url,比如url = git:software/module-a
,其他的有一个相对于远程顶级项目的 url,比如url = ../module-b
. 顶级项目网址是url = git:software/top-project
.
我想创建顶级项目及其所有子模块的工作树副本。
git worktree add -f ../top-project-v2
但是我找不到使子模块指向其原始路径的方法。我希望那个top-project-v2/module-a
git 指向top-project/module-a
,而不是克隆一个全新的模块-a。
如果我这样做cd top-project-v2; git submodule upate --init --recursive
,则命令成功,但子模块未链接到顶级项目子模块。
如果我这样做git checkout --recurse-submodules origin/v2
,我会收到一个错误:
git checkout --recurse-submodules origin/v2
fatal: not a git repository: ../../top-project/.git/worktrees/top-project-v2/modules/module-a
fatal: could not reset submodule index
有什么办法吗?