您好对Git submodule add: “a git directory is found locally” issue
中讨论的问题采取后续问题我有很多这样的子模块目录(不知道有多少)
是否可能以某种方式初始化.gitmodules中列出的所有子模块并强制拉出所有子模块。
此外,我想重置所有子模块并丢弃当地存在的任何更改。
谢谢:)
答案 0 :(得分:1)
是否可能以某种方式初始化.gitmodules中列出的所有子模块并强制拉出所有子模块。
您可以删除所有子模块目录,然后重新运行git submodule update
。也许是这样的:
git config -f .gitmodules --list |
awk -F= '$1 ~ /.path$/ {print $2}' |
xargs rm -rf
这使用git config
列出.gitmodules
中的配置,产生如下输出:
submodule.common.path=common
submodule.common.url=https://github.com/purpleidea/puppet-common.git
我们使用awk
提取路径信息,然后将其传递给xargs
以删除所有子模块目录。然后,运行submodule update
将重新填充这些目录:
$ git submodule update
Submodule path 'common': checked out '2c0ed2844c606fd806bde0c02e47e79c88fab4a9'
此外,我想重置所有子模块并丢弃当地存在的任何更改。
因为我们正在删除并重新克隆子模块,所以这也会丢弃任何本地更改。