揭开 git submodules 的神秘面纱

主要观点:作者曾认为 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 指向新提交的不同方法及注意事项。
阅读 10
0 条评论