git子模块:用Git管理Git存储库下的目录

总结

如果想要将 Git 存储库的主要部分和子部分组织成以下的目录结构时,请执行以下操作

main/ <- Git で管理
|--- sub/ <- Git で管理
     |--- README.md
|--- README.md

我会输入以下的命令。

$ cd main
$ git submodule add https://github.com/<ユーザ名>/sub.git sub

决定使用git子模块的原因

我正在进行使用深度学习进行自然语言处理的研究。我用Python编写代码,并且将Git存储库命名为research,并创建了以下的目录结构。顺便一提,我参考了cookiecutter数据科学模板(https://github.com/drivendata/cookiecutter-data-science)。

research/
|--- data/
|--- models/
|--- notebooks/
|--- result/
|--- src/

有一天,教授向我求助,请求我将其部署为可用的API。
我打算使用Flask,并考虑以下的目录结构。

deploy/
|--- config/
|--- flask/
|--- models/
|--- src/

我想要使用Git来管理部署,并且希望共享research/src/和deploy/src/。换句话说,我想要用Git来管理research目录下的src/文件夹。

查询”git 下 git”并没有获得有效的信息。(难道不是说”在目录下”吗?)
查询”git 中 git”,找到了一篇名为「Git submodule 的基础」(https://qiita.com/sotarok/items/0d525e568a6088f6f6bb)的文章。
这篇文章非常易懂。

我看了一篇文章,并按照以下步骤进行操作:
1. 将 research/src/ 注册为 Git 仓库
2. 将除 deploy/src/ 之外的 deploy/ 注册为 Git 仓库
3. 执行以下命令。

$ cd deploy
$ git submodule add https://github.com/<ユーザ名>/src.git src

现在,我们可以轻松地在 research/src/ 和 deploy/src/ 之间进行编辑,并通过 Git 快速同步更新另一方了。简直太好了。