主要观点:作者曾认为 git submodules 是个麻烦,后来学会后进行解释,包括 submodules 的概念、特点、如何跟踪、更新及相关命令等,还提及了一些进一步的 submodules 相关话题。
关键信息:
- submodule 是嵌套在另一个 repo 中的完整 repo,始终固定到特定提交,git 不会自动下载或更新 submodules。
- git 通过“outer commit -> tree -> submodule commit”链接指定 submodule 提交,
git diff
显示工作树与分支最近提交的差异。 - 更新 submodule 可通过
cd
进入 submodule 并检出提交、git submodule update
(可带--init
初始化并更新、--recursive
更新所有子模块嵌套)、git config submodule.recurse true
使 submodules 自动更新等方式。 - 可通过
git submodule add
添加 submodule,修改 submodule 后可通过特定命令或方法让 outer repo 指向新提交,.gitmodules
文件用于跟踪 submodule 基本信息,可让 submodules 使用除 main 外的其他分支。
重要细节: - 2012 年作者作为“全栈工程师”对 submodules 理解不足导致困惑,如拉取后工作树中 submodule 出现莫名修改等。
- 展示了 submodule 更新前后的 git 仓库图,说明 submodule 指向的变化。
- 详细解释了
git submodule update
的各种参数及使用场景,如--init
、--recursive
等。 - 提到
git config submodule.recurse true
的适用版本及可能的优缺点。 - 说明添加 submodule 的
git submodule add
命令及后续处理。 - 阐述修改 submodule 后让 outer repo 指向新提交的不同方法及注意事项。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。