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

为何执行git push -u origin main仅推送单个文件夹至GitHub仓库?

问题原因
  • client是独立Git仓库:你大概率在client文件夹里单独执行过git init,生成了自己的.git目录。当根仓库执行git add .时,Git会把这种包含独立仓库的文件夹识别为子模块,不会把里面的文件加入根仓库,只会记录子模块的引用,所以GitHub上显示带箭头的空文件夹。
  • 首次提交被标记为子模块:根仓库第一次提交时,Git检测到client的.git目录,自动将其标记为子模块,后续git status就会提示它是带修改/未跟踪内容的子模块。
解决方法

方案1:把client合并为根仓库的一部分(推荐)

如果client不需要作为独立项目,直接把它变成根仓库的普通文件夹:

  1. 进入client文件夹,删除它的本地Git仓库:
    cd client
    rm -rf .git
    cd ..
    
  2. 回到根目录,重新添加client的所有内容:
    git add client/
    
  3. 提交并推送:
    git commit -m "添加client文件夹完整内容"
    git push origin main  # 替换成你的分支名,比如master
    

方案2:保留client作为子模块(适合client是独立项目)

如果client本身是独立项目,需要保留子模块关联,得先把client的代码推到它自己的远程仓库,再更新根仓库的子模块引用:

  1. 进入client文件夹,推送自身代码到远程:
    cd client
    git add .
    git commit -m "更新client代码"
    git push origin main  # 替换成client仓库的分支名
    cd ..
    
  2. 回到根仓库,更新子模块引用并提交:
    git add client
    git commit -m "更新client子模块引用"
    git push origin main  # 替换成根仓库的分支名
    
  3. 后续拉取根仓库时,要同步子模块内容:
    git clone <根仓库地址>
    git submodule init
    git submodule update
    # 或者克隆时直接拉取所有子模块
    git clone --recurse-submodules <根仓库地址>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:50:29