首页 > 解决方案 > 使用 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],我需要为所有子模块找到它。

我看到的解决方案的逻辑:

谢谢

标签: gitgit-bash

解决方案


令人惊讶的是,重新定位现有子模块的命令不是git submodule [smth],它只是:

git mv [submodule] [new_path]

此命令同时执行以下操作:

  • 有效地重命名文件夹(如果指示submodule/将其移动到另一个目录),new_path
  • 更新.gitmodules您的仓库中的文件

推荐阅读