繁体   English   中英

将 git 个子模块从一个仓库复制到另一个仓库

[英]Copy git submodules from one repo to another

我正在开发一组依赖于一组通用的其他库的库。

我想将 .gitsubmodules 文件从一个包含所有必要子模块的存储库复制到所有其他存储库中。

但是我似乎无法让 git 识别子模块文件,或者以其他方式将子模块拉入新存储库。

Git 需要两件事来实现一个子模块:

  1. 来自.gitmodules文件的配置,以及
  2. 索引中的相应commit条目...您可以通过运行git submodule add获得。

在文档中是明确的,其中说明了git submodule init命令:

通过在.git/config中设置submodule.$name.url来初始化索引中记录的子模块(在其他地方添加和提交)。 它使用.gitmodules中的相同设置作为模板....

实际上,这意味着您需要为每个子模块运行git submodule add 如果您经常这样做,您可以编写一个脚本,从.gitmodules文件中读取子模块配置并运行适当的git submodule add命令。 也许是这样的:

#!/bin/bash

submodules=( $(git config -f .gitmodules --name-only --get-regexp 'submodule\..*\.path' | cut -f2 -d.) )
for name in "${submodules[@]}"; do
    path="$(git config -f .gitmodules --get submodule."$name".path)"
    url="$(git config -f .gitmodules --get submodule."$name".url)"

    git submodule add "$url" "$path"
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM