git - 使用 git 命令更新所有 git 子模块路径的脚本(不是通过编辑 .gitmodules 文件)
问题描述
我的 git 项目有很多 sumbmodules。.gitmodules 看起来像这样
[submodule "one"]
path = one
url = ../one
branch = master
[submodule "two"]
path = two
url = ../two
branch = master
[submodule "three"]
path = three
url = ../three
branch = master
未知的子模块列表,我需要更改所有子模块路径,为目录名称添加前缀,所以我的 .gitmodule 文件将如下所示:
[submodule "one"]
path = new_one
url = ../one
branch = master
[submodule "two"]
path = new_two
url = ../two
branch = master
[submodule "three"]
path = new_three
url = ../three
branch = master
我正在使用该命令来更改路径git config --file=.gitmodules submodule.[Submodule].path [new_path]
,我需要为所有子模块找到它。
我看到的解决方案的逻辑:
- 获取所有子模块列表
- 对于每个子模块:-> 获取当前路径-> 设置新路径
谢谢
解决方案
令人惊讶的是,重新定位现有子模块的命令不是git submodule [smth]
,它只是:
git mv [submodule] [new_path]
此命令同时执行以下操作:
- 有效地重命名文件夹(如果指示
submodule/
将其移动到另一个目录),new_path
- 更新
.gitmodules
您的仓库中的文件