根据我在这里学到的关于子模块的知识,我现在可以通过使用将我的子模块回滚到正确的提交
git submodule update --recursive
但是,现在子模块永远不会(很少?)在分支中。我认为没有存储子模块需要的分支。反正我可以用
git branch --contains HEAD
在子模块中找出分支然后切换到它。有内置的方法吗?我的目标是回到包含提交的分支(如果有的话)。
根据我在这里学到的关于子模块的知识,我现在可以通过使用将我的子模块回滚到正确的提交
git submodule update --recursive
但是,现在子模块永远不会(很少?)在分支中。我认为没有存储子模块需要的分支。反正我可以用
git branch --contains HEAD
在子模块中找出分支然后切换到它。有内置的方法吗?我的目标是回到包含提交的分支(如果有的话)。
默认情况下,Git 不通过分支跟踪子模块,它通过提交来跟踪它们。因此git submodule update
将导致子模块处于分离的 HEAD 状态(类似于git checkout
特定的提交哈希)。在做任何工作之前,你必须确保实际检查了一个分支,否则事情可能会变得一团糟。
从 Git 1.8.2 开始,您现在可以让子模块跟踪分支。添加子模块时需要指定此选项:
git submodule add -b master <git repo url>
如果您通过分支跟踪子模块,您需要添加--remote
到更新调用中:
git submodule update --remote