Git子模块分离头状态

Git子模块分离头状态,git,git-submodules,git-detached-head,Git,Git Submodules,Git Detached Head,我在externals/subA和externals/subB中为一个项目添加了两个子模块subA和subB 今天,另一个团队成员提交了他的代码,当它被拉出时,当在externals/subA和externals/subB中使用git status时,subA和subB都显示分离的头部状态 我首先更新了git子模块,没有报告任何错误。然后我再次尝试了git子模块init和git子模块更新,但没有改变 如何使子模块恢复同步?子模块出现这种情况的原因是什么?这是我们成立以来第一次出现这个问题。谢谢。

我在externals/subA和externals/subB中为一个项目添加了两个子模块subA和subB

今天,另一个团队成员提交了他的代码,当它被拉出时,当在externals/subA和externals/subB中使用
git status
时,subA和subB都显示分离的头部状态

我首先更新了git子模块,没有报告任何错误。然后我再次尝试了
git子模块init
git子模块更新
,但没有改变

如何使子模块恢复同步?子模块出现这种情况的原因是什么?这是我们成立以来第一次出现这个问题。谢谢。

根据定义,子模块是在分离头中签出的:它表示一个特定的SHA1,记录为一个

请参阅“”,以确保子模块正在跟踪分支:

# add submodule to track master branch
git submodule add -b master [URL to Git repo];

# update your submodule
git submodule update --remote 
# or (with rebase)
git submodule update --rebase --remote
注意:如图所示,任何
git子模块更新
命令都会自动分离头部,即使子模块配置为跟随分支

作为测试添加git config子模块..updatemerge,因为默认情况下,更新会签出提交(分离的头)


加上:


当运行命令“
git submodule update--init--recursive
”时,git子模块在init阶段本身被分离

我理解git引用并签出git子模块的特定提交

因此,我们创建了一个脚本来运行“
git子模块foreach git checkout master
”和“
git子模块foreach git pull origin master
”等等

这样,在本地机器中设置回购时,我们可以保持连接头状态。
是的,当我们需要更新子模块以反映远程系统中的更改时,我们运行“
git submodule update--remote--merge


它仍然有点跟踪branch@user859375你的意思是跟踪分支部分不工作吗?git状态仍然显示head Distached,所以是我suppose@user859375阅读(您也参考过)之后,应该尝试
git config submodule..update merge
,然后查看在
git子模块更新--rebase--remote
(在子模块内完成
git状态
,而不是从父repo)之后,头部是否仍然分离。当运行命令“git submodule update--init--recursive”时,git子模块在init阶段本身分离。我理解git引用并签出git子模块的特定提交。因此,我们创建了一个脚本来运行“git子模块foreach git checkout master”和“git子模块foreach git pull origin master”等。这样,当在本地机器中设置回购时,我们能够保持连接头的状态。是的,当我们需要更新子模块以反映远程应用程序中的更改时,我们运行“git submodule update--remote--merge”。感谢您的回复和确认