如何使分离的HEAD的子模块连接到实际的HEAD上?
当我像这样将Git子模块添加到Git存储库时,
git submodule add ssh://server/proj1/ proj1
git submodule init
git submodule update
添加的子模块将处于分离的HEAD模式。 我不太清楚那是什么,但我知道子模块将被链接到目标存储库的特定版本。
我不知道它是如何工作的,无论如何它看起来像一个代理分支存在那里。 我通过切换到主分支来解决这个问题。
cd proj1
git checkout master
这将切换当前分支的实际主控HEAD,但是这不会更新联动。 因此,如果您再次克隆整个存储库,它仍将链接到旧版本。
如果我想使它与最新版本(HEAD)始终保持关联,我该怎么做?
2013年3月更新
Git 1.8.2增加了跟踪分支的可能性。
“ git submodule
”开始学习一种新的模式,以便与远程分支的提示集成 (而不是与超级项目的gitlink中记录的提交进行集成)。
# add submodule to track master branch
git submodule add -b master [URL to Git repo];
# update your submodule
git submodule update --remote
另请参阅Vogella关于子模块的教程。
原始答案(2011年12月)
添加的子模块将处于分离的HEAD模式
是的,子模块是关于引用特定的提交,而不是分支。
所以:
master
分支一样),你可以在该分支的顶部创建其他提交(但是你必须回到父代码库以便提交父代以及给你)需要记录您创建的新子模块提交) 有关更多信息,请参阅“子模块的真实性质”。
如果你总是想要另一个repo的最新提交,最简单的方法是将它们合并在一起(例如与子树合并)。
有关详细信息和参考资料,请参见“合并2个相同的存储库GIT”。
上一篇: How to make submodule with detached HEAD to be attached to actual HEAD?