iOS多模块项目子模块新建文件未在SourceTree显示的问题求助
问题排查与解决方案
核心原因
你通过本地路径引入的CocoaPods子模块(如MMCommon)是独立的Git仓库,主项目的Git仅会追踪Podfile、Podfile.lock这类配置文件,不会监控子模块内部的文件变动。SourceTree默认只加载主项目的仓库,因此子模块的新文件不会出现在主项目的Unstaged/Staged区域;Xcode提交未更新GitHub,是因为你操作的是主仓库,并未提交子模块的变更。
具体解决步骤
1. 处理子模块的Git提交
打开子模块的本地目录(如MMCommon文件夹),执行以下Git命令:
# 查看未追踪/修改的文件 git status # 暂存所有新文件 git add . # 提交变更 git commit -m "新增xxx文件" # 推送到GitHub仓库 git push origin main
也可以直接在SourceTree中单独打开子模块的本地仓库目录,就能看到所有未暂存文件,正常提交推送即可。
2. 同步主项目的Pod依赖状态
如果子模块的版本号(Podspec里的s.version)有更新,在主项目目录执行:
pod install
这会更新Podfile.lock,随后将Podfile.lock的变更提交到主项目仓库,确保其他协作方拉取代码后能同步到最新的子模块版本。
3. SourceTree显示子模块的设置
若想在主项目的SourceTree界面快速查看子模块状态:
- 打开主项目的SourceTree窗口,点击顶部菜单栏「仓库」→「子模块」→「添加子模块」(不过本地路径的Pod不算Git子模块,更推荐直接单独打开子模块仓库)
- 或在SourceTree的「文件」→「打开」中选择子模块的
.git文件夹,直接加载子模块仓库。
4. Xcode源码控制的正确操作
- 打开子模块对应的Xcode项目(如
MMCommon.xcodeproj) - 点击Xcode顶部「源代码控制」→「提交」,此时会显示子模块的所有未提交文件,提交后执行推送即可同步到GitHub。
内容的提问来源于stack exchange,提问作者dtrognn
相关产品推荐
相关产品推荐

