当超级项目位于分离头中时更新git子模块

问题描述

我正在尝试以编程方式使用带有子模块的Git存储库。

请澄清一下,这不是一个简单的克隆,我正在使用递归模式进行完整的克隆。

主项目始终在分离的头部中检出,具体取决于在运行时使用git递归克隆提供给用户SHA的用户

问题在于子模块由于某种原因未更新。例如,在子模块文件夹中的df[df['Brand'] == i] 中,我确实看到了来自超级项目的提交,但是文件尚未更新。

这是我使用的命令

df[df['Brand'] == i].groupby('State')['Price'].sum()

我也尝试了认的git log选项,但是没有用。任何想法如何保证将子模块更新到提交SHA超级项目都指向它,并确保文件已更新。也许我缺少明显的东西。

Git在本地登录子模块项目的存储库

enter image description here

Git登录到已签出的超级项目的子模块文件夹中的服务器上

enter image description here

但是,如果我在服务器上打开更改的文件,则该文件尚未更新以反映此提交中的更改。

解决方法

不幸的是,这对我来说是一个愚蠢的错误。当从另一个文件夹中以编程方式执行子模块更新命令时,我使用的是-C <path>选项,而不是使用--git-dir <path>选项。因此,子模块从未更新,也没有任何错误。

毕竟与子模块无关

命令错误

git --git-dir <PATH-TO-REPO-FOLDER>.git submodule update --init --recursive --force

更正的命令

git -C <PATH-TO-REPO-FOLDER> submodule update --init --recursive --force