【发布时间】:2014-05-31 09:44:22
【问题描述】:
您好,对Git submodule add: “a git directory is found locally” issue 中讨论的问题的一个后续问题
我有很多这样的子模块目录(不知道有多少)
是否有可能初始化 .gitmodules 中列出的所有子模块并强制拉出所有子模块。
此外,我想重置所有子模块并丢弃本地存在的任何更改。
谢谢:)
【问题讨论】:
标签: git git-submodules
您好,对Git submodule add: “a git directory is found locally” issue 中讨论的问题的一个后续问题
我有很多这样的子模块目录(不知道有多少)
是否有可能初始化 .gitmodules 中列出的所有子模块并强制拉出所有子模块。
此外,我想重置所有子模块并丢弃本地存在的任何更改。
谢谢:)
【问题讨论】:
标签: git git-submodules
是否有可能初始化 .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'
此外,我想重置所有子模块并丢弃本地存在的任何更改。
因为我们正在删除并重新克隆子模块,这也会丢弃任何本地更改。
【讨论】: