Git子模块更新-头不';与git日志不匹配

Git子模块更新-头不';与git日志不匹配,git,git-submodules,git-commit,Git,Git Submodules,Git Commit,当我拉取存储库并且子模块的提交已更改时,我很难让git的子模块正确更新。首先,我认为这个问题不同于这个问题,因为这个问题涉及到与某个分支机构保持联系的最新情况。我不希望分支上的最新提交,我希望在父存储库中指定提交 以下是我的设想: Git repoA将repoB作为子模块。RepoA将子模块B列为正在提交abc 然后,在repoA内部,我执行一个git pull并接收一个新的repoA提交。这个新的提交声明子模块B现在应该处于提交def状态。我运行一个git子模块更新,以确保所有内容都是最新的

当我拉取存储库并且子模块的提交已更改时,我很难让git的子模块正确更新。首先,我认为这个问题不同于这个问题,因为这个问题涉及到与某个分支机构保持联系的最新情况。我不希望分支上的最新提交,我希望在父存储库中指定提交

以下是我的设想: Git repo
A
将repo
B
作为子模块。Repo
A
将子模块
B
列为正在提交
abc

然后,在repo
A
内部,我执行一个
git pull
并接收一个新的repo
A
提交。这个新的提交声明子模块
B
现在应该处于提交
def
状态。我运行一个
git子模块更新
,以确保所有内容都是最新的

现在问题来了。 我将
cd
放入子模块
B
并运行
git status
。它报告在abc分离的
头部
。嗯,那不对,它应该在
def
但这里有一个令人困惑的部分-我运行了
git日志
,它列出的第一个提交是
def
,前面是
abc
这怎么可能?git日志不应该总是以
头开始吗?如果它知道新的提交,为什么工作副本没有更新以反映这一点?

即使在将子模块置于上述状态后,我也不知道什么
git submodule…
命令(如果有)会将
B
的头部移动到
bcd
。我找到的唯一修复方法是将
cd
放入
B
并手动运行
git checkout bcd


救命啊!我想在repo
a
中使用一个
git pull
来更新子模块
B
到提交,如
a

所示,您可以有选择地关闭子模块更新,您是否这样做并忘记了
git config——列出
并查找子模块更新选项。您可以有选择地关闭子模块更新,是否这样做并忘记了
git config——列出
并查找子模块更新选项。