Git子模块添加:“在本地找到git目录”问题

时间:2014-04-16 13:23:08

标签: git git-submodules

您好对Git submodule add: “a git directory is found locally” issue

中讨论的问题采取后续问题

我有很多这样的子模块目录(不知道有多少)

是否可能以某种方式初始化.gitmodules中列出的所有子模块并强制拉出所有子模块。

此外,我想重置所有子模块并丢弃当地存在的任何更改。

谢谢:)

1 个答案:

答案 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'
  

此外,我想重置所有子模块并丢弃当地存在的任何更改。

因为我们正在删除并重新克隆子模块,所以这也会丢弃任何本地更改。