0

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

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

所以 $main 注意到 $lib 的子模块是 submobules 并且不会将它们的文件推送到 $main 中。

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

4

1 回答 1

1

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

$main 永远不应该在 $lib 中找到任何东西,如果它找到了,那就有问题了。

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

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

归根结底,您不能推送文件,您可以将更改添加到要提交的文件中,并且可以推送提交。

于 2013-08-10T19:35:25.527 回答