如何让git submodule文件在父仓库中可被正常查看和访问
Git子模块使用及文件访问解决方案
你在GitHub上看到的sub_git_project占位符是Git子模块的正常表现:主项目默认仅存储子模块的远程仓库地址、绑定的commit哈希,不会直接存储子模块的实际文件,GitHub平台会将该占位符关联到子模块对应commit的独立仓库页面,不会在主项目内直接展示子模块文件。
如果需要保留子模块的独立版本管理能力,按以下流程操作即可正常访问子模块文件:
本地推送子模块的正确步骤
- 先提交并推送子模块本身的修改到子模块的远程仓库:
cd /home/user/main_git_project/sub_git_project git add sub_files.txt git commit -m "提交子模块文件修改" git push origin <子模块对应分支名>
- 回到主项目目录,提交子模块的配置和绑定的commit版本变更:
cd /home/user/main_git_project git add .gitmodules sub_git_project git commit -m "添加sub_git_project子模块" git push origin <主项目分支名>
拉取主项目时获取子模块文件的方法
- 首次克隆主项目时可直接添加参数拉取所有子模块内容:
git clone --recurse-submodules <主项目仓库地址> - 若已克隆主项目,可手动执行命令拉取子模块文件:
cd <主项目本地目录> git submodule update --init --recursive
无需独立版本管理的替代方案
如果你不需要子模块的独立版本管理功能,希望子模块的文件直接存储在主项目仓库中、可在GitHub主项目内直接查看,可删除子模块配置后直接提交文件:
# 清除子模块配置 git submodule deinit -f sub_git_project rm -rf .git/modules/sub_git_project git rm -f sub_git_project # 将sub_git_project的原始文件复制到主项目目录后正常提交即可 cp -r <你的子模块原始文件路径> sub_git_project git add sub_git_project git commit -m "提交sub_git_project目录文件" git push
内容的提问来源于stack exchange,提问作者Joe Teumer
相关产品推荐
相关产品推荐

