Jér*_*ôme 6 git git-submodules git-worktree
我有一个顶级项目,有大约 10 个子模块和一些嵌套子模块。
./top-project/
./top-project/module-a
./top-project/module-b
...
Run Code Online (Sandbox Code Playgroud)
一些子模块有一个经典的 url,如url = git:software/module-a,其他子模块有一个相对于远程顶级项目的 url,如url = ../module-b。顶级项目 url 是url = git:software/top-project.
我想创建顶级项目及其所有子模块的工作树副本。
git worktree add -f ../top-project-v2
Run Code Online (Sandbox Code Playgroud)
但我找不到一种方法使子模块指向其原始路径。我希望top-project-v2/module-agit 指向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
Run Code Online (Sandbox Code Playgroud)
有什么办法可以做到吗?