如何解决子模块的git日志和切换回主模块时的git子模块更新
我有两个存储库,一个包含实际代码,一个具有(单元)测试。 tests
作为code
存储库中的子模块包含在内。两者都有两个分支master
和dev
。在主存储库中,我引用了子模块的特定提交:
母版:tests@f860f6fd
(是对tests:master
的提交)
dev:tests@028bfd53
(这是对tests:dev
的提交)
在新机器上,我检出了主存储库以及子模块:
> git clone --recurse-submodules URL .
[...]
Submodule 'tests' (URL2) registered for path 'tests'
Submodule path 'tests': checked out 'f860f6fd8dbd613a6569350e5651a34986ae15d6'
这给了我code:master
以及一个独立的子模块头:
> cd tests && git branch
* (HEAD detached at f860f6f)
master
接下来,我切换到dev
分支:
> cd .. && git checkout dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
Switched to a new branch 'dev'
> cd tests && git branch
* (HEAD detached at f860f6f)
master
不出所料,我仍然是tests:master
的领导者。但是,git log
已经显示了tests:dev
的日志!
现在,我更新子模块:
> cd .. && git submodule update --remote
Submodule path 'tests': checked out 'f860f6fd8dbd613a6569350e5651a34986ae15d6'
由于没有在任何配置中设置分支,因此将拉tests:master
。文件夹git log
中的tests
现在显示tests:master
的日志。
> git submodule update --init
Submodule path 'tests': checked out '028bfd53656ccb5c78cb55adec39ce655fc8936c'
> cd tests && git branch
* (HEAD detached at 028bfd5)
master
这从tests:dev
中提取了提交,而git log
显示了来自tests:dev
的日志。
接下来,我切换回master
:
> cd .. && git co master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
> cd tests && git branch
* (HEAD detached from 028bfd5)
master
所以我仍然处于tests:dev
的头上,但是git log
再次显示了tests:master
的日志!
> cd .. && git submodule update --remote
> git submodule update --init
> cd tests && git branch
* (HEAD detached from 028bfd5)
master
什么都没改变!
问题1:为什么日志会表现得如此?
问题2:为什么最后一个命令为什么没有拉出子模块的master
分支?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。