永久性地将子模块文件添加到主存储库

时间:2013-08-10 18:27:57

标签: git git-submodules

我有一个普通的存储库$ main,没有子模块。在其中我使用git clone将库$ lib添加到/ 3rdparty / $ lib中。

$ lib存储库还包含几个我初始化和更新的子模块。

所以$ main注意到$ lib的子模块是submobules,不会将他们的文件推送到$ main。

我可以将此子模块永久添加到$ main吗?

1 个答案:

答案 0 :(得分:1)

如果$ lib是一个子模块(正如你所说的那样克隆它我想是这样),$ lib应该重新定义为git-repo并作为子模块添加,$ lib本身应该跟踪它自己的子模块。

$ main应该永远不会在$ lib中找到任何内容,如果有的话就会出错。

从技术上讲,您应该能够将子模块添加到超级项目中,并作为其中一个超级项目子模块的子模块添加,但是在结帐和工作树更新期间它可能会发生冲突,这真的很糟糕。

您还应该使用git submodule add而不是在超级项目中执行git clone。 git子模块add(和子模块初始化/更新等)将.git-dir放在superprojects .git-dir中,这将允许git更好地处理子模块(例如,当它们不需要时从工作树中删除它们)

作为底线,你无法推送文件,你可以添加要提交的文件的更改,你可以推送提交。