Git-修复子模块Head_detached的问题
Git-子模块Head detached的问题
更新了项目的code, 更新完之后执行 git status,发现子模块似乎发生了变化:
提示有 “new commits”, 于是进入到子模块把子模块代码也给更新了一下,结果更新完了之后发现子模块的状态变成下面的样子:
解决方案
-
进入到当前子模块的目录,执行:
cd path/to/submodule # Assuming you're tracking the 'master' in the submodule git checkout master
这样可以暂时修复 detached state.
-
回到主模块所在的目录,执行:
# cd back to project root git submodule update --remote --merge # or git submodule update --remote --rebase
更新所有子模块内容,如果你觉得每次执行
submodule update --remote --rebase
或submodule update --remote --merge
比较麻烦,你可以为这两条命令指定一个别名,如:git config alias.supdate 'submodule update --remote --merge' # do submodule update with git supdate
这样你下次只需要执行
git supdate
就可以达到相同的效果了。经过如上操作后,子模块基本能恢复正常了。
后面的内容如果不想看可以忽略。
--------------------------------------------------- 华丽丽的分割线 -----------------------------------------------------
Unix命令的设计哲学就是一个命令只会做一件事,这样就导致你通过
git submodule update --remote
来更新所有子模块的代码后,子模块的代码有被 pull 下来,但是没有跟原来的代码merge到一起,所以有时候还需要执行:git submodule update --rebase
或git submodule update --merge
来手动将这些代码合并到一起,有一种做法就是可以修改git submodule update
的默认行为,让它在pull
完子模块代码之后,自动进行merge
:手动进行修改:
打开主模块的目录,找到主模块的
.git
文件夹
找到里面的config
文件,打开后修改子模块update的默认行为:
update = merge
或者你通过执行下列命令进行配置:
git config -f .gitmodules submodule.$name.update merge
这样你下次再执行git submodule update --remote
时就不用再显式指定 --rebase
或 --merge
了,它会根据这边的配置选项自动进行merge。
参考链接
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
2017-11-24 3.进程
2016-11-24 新浪微博客户端(37)-发布新微博
2016-11-24 新浪微博客户端(36)-自定义带placeholder的TextView
2016-11-24 iOS-开启arc之后 NSNotificationCenter removeObserver 是否需要调用
2016-11-24 新浪微博客户端(35)-使用NSMutableAttributedString实现多行文本的效果
2016-11-24 android-android获取navigationview 上的控件id