【发布时间】:2019-01-31 07:54:26
【问题描述】:
我正在开发 git 子模块:
1) 创建 MASTER 项目 git repo,做一些提交
2) 创建 SUB 项目 git repo,做一些提交
3) 使用 git submodule 功能,将 SUB 添加到 MASTER/somefolder/
4) 然后 Alice 在 SUB 上执行 2 次提交,分支 Alice。
5) 然后 Bob 执行 2 次提交,分支 Bob。
6) 然后我通过子模块函数将 Alice 和 Bob 的提交添加到 SUB 和 MASTER 中。
在这个过程中,我有些困惑:
1) 在初始化过程中,将 SUB 添加到 MASTER 中,MASTER 将如何记住在 SUB 中添加提交?
例如,如果 SUB 有 2 个分支,那么 MASTER 会记住哪些分支的提交?
如果是使用 SUB 的 master 分支?还是使用 SUB 的 HEAD?
如果使用 HEAD,那么如果我将 HEAD 指向 SUB 的另一个分支(不是 master),会发生什么?
2) 当我将 Alice 的 2 次 SUB 提交添加到 MASTER 时,MASTER 怎么知道我想添加 Alice 的 2 次提交,而不是 Bob 的?
据说 MASTER 不关心 SUB 的分支,只关心 SUB 的提交。
这是我对git子模块功能实现的理解:
MASTER 只记得一个提交 ID,例如 abcdefg123456。
那么如果你执行git submodule update --init --recursive,MASTER 将下载位于 abcdefg123456 的分支中的所有提交,直到 abcdefg123456 提交。
对吗?
如果上面是对的,那我就一头雾水了,分支Alice和Bob都加commits,如果我在Alice用的是abcdefg123456,那怎么加Bob的commits呢?
【问题讨论】:
标签: git github git-submodules