Git 高级
Amanda Crawford-Adamo
Software and Data Engineer
Git 子模块
git submodule

通过链接或路径下的目录添加子模块。
git submodule add <repository link|dir> <path>
$$
示例
将数据校验库添加到 ETL 项目中,路径为 ETL 仓库的 libs/validator。
git submodule add https://github.com/example/data-validator.git libs/validator
列出项目中的所有子模块
git submodule status
示例
$ git submodule status
e1f2...7w8x9 data_cleaning_lib
a1b2...q7r8 api_connector
d9e8...t3u2 visualization_toolkit
用最新变更更新子模块
有以下选项:
git submodule update --init
git submodule update --init --remote
git submodule update --init <path_to_submodule>
移除子模块流程
git submodule deinit <submodule_name>
git rm <path>
将需要放入新子模块仓库的文件复制到仓库外的另一个文件夹。
在新文件夹内为子模块创建新仓库:
git init <new-submodule>
使用 git filter-repo 从主项目中提取相关文件和历史:
git filter-repo --path <extract_path> --invert-paths
将提取出的仓库作为子模块添加到主项目:
git submodule add <new-submodule_path> <path_to_store_submodule>
适用场景:
最佳实践:
Git 高级