将上游设置为子模块(或如何将GitHub fork作为子模块包含)

pek*_*pek 8 git github git-submodules

我对这个Git事情很陌生,需要一些帮助.

我最近在GitHub上创建了一个新的repo并将其克隆到我的桌面上.我们称之为myProject.我的GitHub帐户中也有一个fork,我将其作为子模块包含在myProject中.让我们把这种myForkOfOtherProject,这是一个叉otherProject.

那么,这是目前的情况:

回购的当前状态图

据GitHub说:

当一个repo被克隆时,它有一个默认的远程名为origin,指向你在GitHub上的fork,而不是它分叉的原始repo.要跟踪原始仓库,您需要添加另一个名为upstream的远程.

所以,我的问题是,如何将上游设置为子模块?或者我不明白什么?

先感谢您.

Tod*_*obs 9

子模块

将子模块克隆到存储库时,它将拥有自己的.git/config文件及其自己的原始概念.假设子模块是您的(例如,您的遥控器上游没有第三方存储库),那么您不必担心为子模块创建上游远程数据库.

如果您确实需要为子模块创建上游远程,那么这很容易.只需cd进入子模块的顶级目录,然后按照与主存储库相同的方式给它.

cd myForkOfOtherProject
git remote add upstream git://example.com/otherProject.git
Run Code Online (Sandbox Code Playgroud)

没有名称空间冲突,因为子模块实际上只是一个普通的git存储库,在超级项目中跟踪了一些额外的元信息.超级项目和子模块不共享其.git/config文件.

对于所有意图和目的,您可以像处理任何其他存储库一样处理子模块内的上游.您在子模块中运行的Git命令独立于超级项目,超级项目主要关注跟踪子模块的当前提交ID.