详解git submodule HEAD detached 的问题
在使用gitsubmodule的时候,常常会遇到执行完以下操作后发现子仓库的head指针处于游离状态
- gitclonexxxxx.git
- gitsubmoduleupdate--init
然后切换到子仓库,查看当前分支的状态如下
原因是之前同事在子仓库中修改并提交后,没有在父仓库中更新子仓库的最新提交记录
正常情况下,修改子仓库的内容并在子仓库提交后会在父仓库执行gitdiff会有如下输出
解决gitsubmoduleheaddetached的方法:
重新建立submodule,加入时使用-b参数,使得母项目追踪子项目的指定branch(否则默认不追踪):
gitsubmoduleadd-b[ ] gitsubmoduleupdate--remote
简单的一行命令递归修复所有子项目的detachedhead(其中默认都追踪子项目的masterbranch):
gitsubmoduleforeach-q--recursive'gitcheckout$(gitconfig-f$toplevel/.gitmodulessubmodule.$name.branch||echomaster)'
参考
WhyismyGitSubmoduleHEADdetachedfrommaster?
Gitsubmodulesbestpractices
到此这篇关于详解gitsubmoduleHEADdetached的问题的文章就介绍到这了,更多相关gitsubmoduleHEADdetached内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。