将 git 个子模块从一个仓库复制到另一个仓库
Copy git submodules from one repo to another
我正在开发一组库,这些库依赖于一组通用的其他库。
我想将一个包含所有必要子模块的存储库中的 .gitsubmodules 文件复制到所有其他存储库中。
但是我似乎无法 git 识别子模块文件,或以其他方式将子模块拉入新存储库。
Git 需要两件事来实现子模块:
- 来自
.gitmodules
文件的配置,以及
- 索引中相应的
commit
条目...您通过 运行ning git submodule add
. 获得
这是明确的 in the documentation,它说明了 git submodule init
命令:
Initialize the submodules recorded in the index (which were added and committed elsewhere) by setting submodule.$name.url
in .git/config
. It uses the same setting from .gitmodules
as a template....
实际上,这意味着您需要为每个子模块 运行 git submodule add
。如果您经常这样做,您可以编写一个脚本,从 .gitmodules
文件和 运行 适当的 git submodule add
命令中读取子模块配置。可能是这样的:
#!/bin/bash
submodules=( $(git config -f .gitmodules --name-only --get-regexp 'submodule\..*\.path' | cut -f2 -d.) )
for name in "${submodules[@]}"; do
path="$(git config -f .gitmodules --get submodule."$name".path)"
url="$(git config -f .gitmodules --get submodule."$name".url)"
git submodule add "$url" "$path"
done
我正在开发一组库,这些库依赖于一组通用的其他库。
我想将一个包含所有必要子模块的存储库中的 .gitsubmodules 文件复制到所有其他存储库中。
但是我似乎无法 git 识别子模块文件,或以其他方式将子模块拉入新存储库。
Git 需要两件事来实现子模块:
- 来自
.gitmodules
文件的配置,以及 - 索引中相应的
commit
条目...您通过 运行ninggit submodule add
. 获得
这是明确的 in the documentation,它说明了 git submodule init
命令:
Initialize the submodules recorded in the index (which were added and committed elsewhere) by setting
submodule.$name.url
in.git/config
. It uses the same setting from.gitmodules
as a template....
实际上,这意味着您需要为每个子模块 运行 git submodule add
。如果您经常这样做,您可以编写一个脚本,从 .gitmodules
文件和 运行 适当的 git submodule add
命令中读取子模块配置。可能是这样的:
#!/bin/bash
submodules=( $(git config -f .gitmodules --name-only --get-regexp 'submodule\..*\.path' | cut -f2 -d.) )
for name in "${submodules[@]}"; do
path="$(git config -f .gitmodules --get submodule."$name".path)"
url="$(git config -f .gitmodules --get submodule."$name".url)"
git submodule add "$url" "$path"
done