一些个人背景:我以前使用过git子模块,但是老实说我不是一个狂热者,并且完全接受这也许是我对它们工作方式细微差别的无知。当我以前将它们用于共享库时,我在子模块中使用git pull
提取了更新,然后在父模块中显示为modified … (new commits)
。我明白了-我已经更改了.git
元数据中的提交指针,或类似的内容,并且需要在父仓库中进行commit
和push
的更改,以便将其关联带有正确的子模块提交。
我的问题:我现在从事一项新工作,并且我从事的项目有一个子模块。它不是共享库-出于安全原因,构建过程依赖于某些凭据,这些凭据每天都会更新并通过子模块分发。因此,git submodule update --remote
每天都会进行提取更新的过程。
两个奇怪之处:(1)子模块永久处于分离头状态; (2)父级的status
保持干净,表明对子模块没有任何更改。
那为什么会有问题呢?问题是,我的拉取请求与子模块一起显示在“更改的文件”列表中。我不认为这实际上会导致问题,但是一位同行审阅者特别反对这些更改,因为这些更改不应该存在。由于子模块永远不会显示为git status
输出中的修改内容,因此我不知道如何提交任何更改,以及如何停止此更改。
(这是GitHub中的私有存储库-我有一个fork,并且正在我的fork的一个分支中工作。子模块仍指向其存储库的未分叉主服务器。)
(显然,这在其他一些开发人员的PR中也很明显,但在每个PR中并非如此。)
我是这家公司的新手,可以做的事不会被描绘成无法正确控制版本的人!但是我需要一个比我更有智慧的人来告诉我这是怎么回事。
(个人而言,我的解决方案是不使用子模块,否则这可能不在我的控制范围之内。)