我有与 git 子模块有关的复杂问题/案例。我在 github 和第三方子模块上有自己的 repo(由其他公司提供,只读)。我处理了初始化子模块,更新它,将 .gitsubmodule 和新文件夹添加到主仓库等 - 一切正常。现在我想对子模块文件进行一些更改,将新文件添加到子模块或类似的东西。我做到了,然后我从子模块目录级别执行了提交。我将文件夹更改为主仓库,git status 显示子模块文件夹中未提交的提交。所以…… git commit -a
,。git push
(当我在子模块目录中检查 git 状态时,我得到的信息是您的分支在 X 提交之前位于 'origin/master' 之前。)
当我从 github 对我的 repo 进行递归克隆时,我遇到了错误(我想是由子模块的更改引起的):
fatal: reference is not a tree: c19485a57b5152959b9a916409ad5d901c44741d
Unable to checkout 'c19485a57b5152959b9a916409ad5d901c44741d' in submodule path 'apt'
所以,我的问题是:
- 我可以在子模块中进行更改并将它们(和跟踪)推送到 github。
- 如果是,我必须做什么,我可以将所有带有子模块的 repo 和其中的更改拉到另一个主机(一些工作流程?)。
- 如果没有,我如何通过从我的 github 存储库级别查看子模块并拉到另一个主机来规避对子模块的更改
- 有可能吗?