2

我正在从 Github分叉mapbox-ios-sdk 。mapbox-ios-sdk 使用FMDB作为子模块。我想要我自己的自定义版本的 FMDB (实际上只是从另一个项目中添加一个 sqlite3.h),因此我想要我自己的 sdk 分支。

所以在我自己的 fork 上,我尝试删除原来的 FMDB 子模块并添加我自己的 fork。我根据这个线程删除了子模块。然后我通过以下方式在与原始 FMDB 子模块相同的目录中添加了我自己的 FMDB 分支:

git submodule add https://github.com/t2wu/fmdb ./MapView/Map/FMDB

现在我遇到了我无法解释的事情。上面的命令不起作用!它会下载 FMDB 好,但我不会在./MapView/Map/FMDB/src. (而且git log --graph我没有看到我自己对 sqlite3.h 的提交,而且我在 master 上。)但是,如果我只是把它放在其他地方,比如说

git submodule add https://github.com/t2wu/fmdb ./MapView/MapView/FMDB

或者

git submodule add https://github.com/t2wu/fmdb FMDB

然后我确实看到了 sqlite3.h。会发生什么?它与 mapbox-ios-sdk 显然也支持的 CocoaPod 有什么关系吗?

4

1 回答 1

3

尽管您删除了旧的子模块,但元数据仍保留在 .git/modules/MapView/Map/FMDB 中。

从 git 1.7.8 开始,git 将子模块元数据存储在父存储库的 .git 目录中,而不是子模块中的单独 .git 。这就是为什么您会看到旧子模块的历史记录和工作树。

要让一切恢复原状,请转到父存储库的基础并运行:

git submodule sync
cd MapView/Map/FMDB
git fetch
git checkout origin/master
于 2013-01-16T05:39:47.690 回答