You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CLion中把GitHub仓库B文件夹推送到仓库A并修复空不可点击目录

现象说明

你遇到的不可点击空文件夹效果如下:
无法点击的嵌套仓库占位条目
这个问题本质是Git嵌套仓库的默认处理逻辑导致,以下是具体原因和CLion中的操作方案:

根因

你直接将完整的B仓库克隆到A的工作目录内时,B文件夹自带独立的.git版本管理目录,A仓库的Git会自动将该文件夹识别为外部嵌套仓库,不会追踪文件夹内的实际文件,只会存储一个指向B当前提交哈希的gitlink占位条目,推送后就会显示为不可点击的空文件夹。

操作方案

场景1:需要保留B的独立仓库属性,双仓库并行管理

这种场景用Git子模块功能实现,操作步骤:

  • 先清理A仓库已缓存的错误gitlink条目:打开CLion底部的「终端」面板,切换到A仓库根目录,执行git rm --cached <B文件夹在A中的相对路径>,该操作不会删除你本地已有的B仓库文件
  • 将B正式添加为A的子模块:同终端下执行git submodule add <B仓库的远程地址> <B文件夹在A中的相对路径>,执行完成后A根目录会生成.gitmodules配置文件,记录子模块关联关系
  • 提交A仓库的变更:在CLion左侧的Git提交面板,勾选.gitmodules和对应的B子模块条目,提交后推送到A的远程仓库即可,此时A远程的B文件夹会变成可点击的子模块入口

提示:其他用户克隆A仓库时需要执行git clone --recursive <A仓库地址>才能同时拉取到子模块B的内容

CLion中同时更新双仓库的操作:

  • 更新B仓库:点击CLion顶部Git工具栏的仓库切换下拉框,选中B仓库,正常做拉取、提交、推送操作即可,变更会同步到B的远程仓库
  • 同步B的变更到A仓库:切换回A仓库,Git面板会自动检测到子模块的提交变动,勾选子模块条目提交推送到A的远程,就完成了A的更新

场景2:不需要保留B的独立仓库属性,直接合并到A

如果不需要B继续作为独立仓库维护,直接把B的文件整合到A即可:

  • 打开CLion的项目文件树,勾选显示隐藏文件,进入B文件夹删除内部的.git目录
  • 在A仓库根目录执行git add <B文件夹相对路径>/*,将B的所有文件加入A的版本追踪
  • 正常提交推送A的变更即可,此时远程A的B文件夹会正常展示所有内部文件

内容的提问来源于stack exchange,提问作者masoud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:36:03