git push 后 文件夹异常打不开

git push 发现有个文件 夹 变成了 FunASR @ c0b2079 且无法点开查看内容

问题根源

FunASR @ c0b2079 这种格式表示该文件夹是 Git Submodule(子模块)Git Submodule的残留/未完整初始化状态 ,也可能是 git-lfs/稀疏检出导致的特殊引用,本质是Git将该目录标记为指向另一个仓库特定提交(c0b2079 是提交哈希)的引用,而非普通文件夹,因此无法直接点开查看内容。

核心解决步骤(分场景处理)

场景1:误引入Submodule,需要转为普通文件夹

如果这个文件夹本应是项目内的普通目录,却被误标记为Submodule,按以下步骤修复:

步骤1:删除Submodule引用(保留文件)
bash 复制代码
# 1. 先删除.gitmodules中对应的Submodule配置(如果存在)
git rm --cached FunASR  # 关键:仅删除Git对Submodule的引用,不删除本地文件
rm -rf .git/modules/FunASR  # 删除Submodule的本地缓存(如果有)

# 2. 编辑.git/config,删除[submodule "FunASR"]相关配置(如果存在)
# 可直接用编辑器打开:vim .git/config

# 3. (可选)如果.gitmodules文件存在,删除其中FunASR的配置段
# 例如:sed -i '/\[submodule "FunASR"\]/,+3d' .gitmodules

# 4. 将FunASR重新加入Git追踪(转为普通文件)
git add FunASR/
git commit -m "移除FunASR的Submodule标记,转为普通文件夹"
git push
步骤2:验证修复

推送后重新拉取仓库,FunASR 会恢复为普通文件夹,可正常点开查看内容。

场景2:确实需要Submodule,仅需初始化查看内容

如果该文件夹本就是作为Submodule引入的(依赖其他仓库),需要初始化Submodule才能查看内容:

bash 复制代码
# 1. 初始化并拉取Submodule代码
git submodule init  # 初始化Submodule配置
git submodule update --recursive  # 拉取Submodule对应提交的代码

# (或一步到位)
git submodule update --init --recursive FunASR

# 2. 此时FunASR文件夹会被填充代码,可正常查看
# 推送时Submodule的引用会被保留,协作者拉取时也需执行上述update命令
场景3:Submodule已损坏/残留,强制清理

如果是Submodule残留导致的异常,强制清理后重新添加:

bash 复制代码
# 1. 彻底删除Submodule相关痕迹
git rm -f FunASR
rm -rf FunASR/.git  # 如果FunASR内有.git文件夹(Submodule残留)
rm -rf .git/modules/FunASR

# 2. 提交删除操作
git commit -m "清理损坏的FunASR Submodule"

# 3. 将FunASR作为普通文件夹重新加入
cp -r /备份的FunASR目录/ ./FunASR  # 恢复本地文件(如果已删除)
git add FunASR/
git commit -m "重新添加FunASR为普通文件夹"
git push

关键补充说明

  1. 为什么会出现这种格式?

    • 执行过 git submodule add <仓库地址> FunASR 命令,误将目录设为Submodule;
    • 拉取代码时未执行 git submodule update,Submodule未初始化;
    • 拷贝/移动文件时带入了其他仓库的 .git 文件夹,Git识别为Submodule。
  2. 避免后续踩坑的注意事项

    • 不要在项目内嵌套 .git 文件夹(会被Git识别为Submodule);
    • 引入Submodule前确认必要性,非必要优先复制文件而非用Submodule;
    • 推送前执行 git status 检查,避免意外提交Submodule引用。
  3. 验证是否彻底解决

    推送后,在Git仓库网页端查看:

    • 正常文件夹:显示为文件夹图标,可点击展开;
    • 仍为Submodule:显示为 FunASR @ c0b2079 样式,需重新执行上述步骤。
相关推荐
习惯就好zz4 小时前
Git 交互式 rebase 实战:将后续修改合并到历史提交
git
南棱笑笑生11 小时前
20260429给万象奥科的开发板HD-RK3576-PI适配瑞芯微原厂的Android14时删除全部的.git目录
git·rockchip
tsyjjOvO12 小时前
【Git 从入门到实战】(IDEA+Gitee 版)
git·gitee·idea
你知道“铁甲小宝”吗丶13 小时前
git推送到多平台(gitee/github)
git·gitee·github
bksczm13 小时前
Linux之基础开发工具之git
git
GUET_一路向前13 小时前
【git工作常用指令】
大数据·git·elasticsearch
handler0114 小时前
Git 核心指令速查
linux·c语言·c++·笔记·git·学习
二宝哥14 小时前
大数据之yum安装git
git
牛奶咖啡1315 小时前
Git实践——git远程仓库操作
git·git远程仓库的创建·github创建仓库·git将本地仓库推送到远程仓库·使用git克隆远程仓库到本地·git分支的创建与合并·git冲突的产生与解决
随风,奔跑16 小时前
Git学习笔记
笔记·git·学习