文件夹上传到github分支最后github上面还是没有文件和文件夹

环境:

github

问题描述:

文件夹上传到github分支最后github上面还是没有文件和文件夹,

和这样一样

解决方案:

git ls-tree -r HEAD 的输出中可以看到,metahuman-stream 文件夹显示为如下内容:

plaintext 复制代码
160000 commit 0c63e9a11be04229c5f2d697c21bc4bc88feb944  metahuman-stream

这个显示表明 metahuman-stream 文件夹被 Git 视为一个子模块 (submodule) ,而不是普通的文件夹。这是导致 metahuman-stream 文件夹内容没有出现在 GitHub 的主要原因。


问题原因

metahuman-stream 之所以被标记为 160000 commit,是因为在某个操作中,您可能运行了以下命令之一,导致 Git 将 metahuman-stream 文件夹初始化为一个子模块:

bash 复制代码
git submodule add <repository-url> metahuman-stream

或者在其他情况下,metahuman-stream 文件夹被误识别为指向另一个 Git 仓库的子模块。

在这种情况下,Git 只会跟踪 metahuman-stream 子模块的引用 (即另一个仓库的commit ID: 0c63e9a11be04229c5f2d697c21bc4bc88feb944),而不会跟踪文件夹中的实际文件内容。


解决方案:移除子模块并重新添加文件夹

我们需要将 metahuman-stream 文件夹恢复为普通文件夹并提交所有实际内容。以下是解决问题的步骤:


1. 删除子模块引用

首先,移除 metahuman-stream 子模块的引用。

  1. 运行以下命令,删除子模块记录:

    bash 复制代码
    git rm --cached metahuman-stream

    注意 :这个操作只会移除子模块的引用,而不会删除本地的 metahuman-stream/ 文件夹内容。

  2. 删除 .gitmodules 文件中对 metahuman-stream 的子模块记录:

    bash 复制代码
    sed -i '/metahuman-stream/d' .gitmodules
  3. 提交更改:

    bash 复制代码
    git add .gitmodules
    git commit -m "Remove metahuman-stream submodule reference"

2. 恢复 metahuman-stream 为普通文件夹

在移除子模块引用后,重新将 metahuman-stream/ 文件夹中的内容添加为普通文件夹。

  1. 确保 metahuman-stream/ 文件夹中的内容仍在本地:

    bash 复制代码
    ls -la metahuman-stream/
  2. 添加文件夹的所有内容到 Git 暂存区:

    bash 复制代码
    git add metahuman-stream/
  3. 提交更改:

    bash 复制代码
    git commit -m "Add metahuman-stream as a regular folder"
  4. 推送更改到远程分支:

    bash 复制代码
    git push origin metahuman-stream

3. 验证远程分支的内容

推送成功后,登录到 GitHub 仓库,确认是否能在分支 metahuman-stream 上看到 metahuman-stream 文件夹及其内容。


完整操作命令

以下是完整的操作流程,请严格按照步骤执行:

bash 复制代码
# 1. 移除子模块引用
git rm --cached metahuman-stream

# 2. 删除 .gitmodules 文件中对 metahuman-stream 的记录
sed -i '/metahuman-stream/d' .gitmodules

# 3. 提交更改
git add .gitmodules
git commit -m "Remove metahuman-stream submodule reference"

# 4. 确保 metahuman-stream 文件夹内容仍然存在
ls -la metahuman-stream/

# 5. 添加文件夹为普通文件夹
git add metahuman-stream/
git commit -m "Add metahuman-stream as a regular folder"

# 6. 推送更改到远程分支
git push origin metahuman-stream

注意事项

  1. 警告:不要删除本地 metahuman-stream 文件夹内容

    在移除子模块引用的过程中,Git 只会删除对于子模块的跟踪信息,但不会删除本地目录的实际文件。

  2. 检查 .gitmodules 文件

    如果 .gitmodules 文件中仍然存在任何子模块的记录,必须将其清理干净,否则远程分支可能会继续将 metahuman-stream 文件夹视为子模块。

  3. 验证推送结果

    推送完成后切换到 GitHub 上的 metahuman-stream 分支,确保 metahuman-stream 文件夹显示为普通文件夹,而不是子模块。


总结

通过上述操作,您可以移除 metahuman-stream 文件夹作为子模块的引用,并将其恢复为普通的文件夹内容提交到远程分支。

相关推荐
徐sir(徐慧阳)1 小时前
搭建属于自己的网站HEXO静态页(二)发布网站到gihub
服务器·node.js·github·hexo
哈喽哈喽哈喽~1 小时前
推送文件到github ---服务器关键配置内容
运维·服务器·经验分享·github
技术爬爬虾3 小时前
AI编程新王Codex详细攻略,一期视频精通,附免费使用方法
程序员·github
散峰而望4 小时前
基本魔法语言分支和循环 (二) (C语言)
c语言·开发语言·github·visual studio
期待のcode5 小时前
gitee与github远程仓库
gitee·github
半桔8 小时前
【IO多路转接】IO 多路复用之 select:从接口解析到服务器实战
linux·服务器·c++·github·php
Moment8 小时前
为什么 Electron 项目推荐使用 Monorepo 架构 🚀🚀🚀
前端·javascript·github
掘金安东尼8 小时前
🧭前端周刊第437期(2025年10月20日–10月26日)
前端·javascript·github
孤廖8 小时前
面试官问 Linux 编译调试?gcc 编译流程 + gdb 断点调试 + git 版本控制,连 Makefile 都标好了
linux·服务器·c++·人工智能·git·算法·github
草梅友仁20 小时前
Npm 安全更新与千星沙箱 | 2025 年第 43 周草梅周报
npm·开源·github