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

Git合并myStudy分支到main分支时提交报错如何解决

问题根因

报错核心来自两点:

  1. 目录Modern-JavaScript-Deep-Dive是当前仓库挂载的Git子模块,子模块内部的未跟踪内容不会被主仓库的git add .命令识别,因此执行提交时会提示没有可提交的变更,同时一直弹出子模块内容未处理的警告。
  2. 你之前的操作流程存在逻辑错误:切到myStudy分支后执行git push origin main不符合Git分支操作的逻辑,也无法完成分支合并的目标。
排查修复步骤

第一步:先处理子模块的未跟踪内容

根据你是否需要保留子模块内的改动,二选一操作即可:

  • 不需要保留子模块临时改动:在主仓库根目录执行以下命令,清除所有子模块内的未跟踪文件,同时将子模块指针恢复到主仓库记录的版本:
git submodule foreach --recursive git clean -fd
git restore Modern-JavaScript-Deep-Dive
  • 需要保留子模块内的改动:先进入子模块目录完成子模块内部的提交,再回到主仓库即可识别到子模块的版本变更:
cd Modern-JavaScript-Deep-Dive
git add .
git commit -m "提交子模块内的对应改动"
cd ..

第二步:同步本地main分支的领先提交

子模块状态处理完成后,先切回main分支,把本地比远程多的4个提交推送到远程,保证本地和远程main分支基线一致:

git checkout main
git push origin main

第三步:完成myStudy到main的分支合并

  1. 切回myStudy开发分支,将分支上的所有代码改动提交完成,推送到远程仓库:
git checkout myStudy
# 若分支上还有未提交的常规代码改动,正常执行add、commit即可,子模块状态处理完后不会再弹出之前的报错
git add .
git commit -m "提交myStudy分支的开发改动"
git push origin myStudy
  1. 切回main分支,执行合并操作:
git checkout main
git merge myStudy
  1. 如果合并过程出现代码冲突,按照提示手动解决冲突文件后,执行git add [冲突文件名]、git commit完成合并提交,最后执行git push origin main把合并后的main分支推送到远程,整个流程就完成了。

注意:处理子模块状态时优先使用主仓库的git submodule系列命令操作,不要直接在子模块目录随意执行重置类命令,避免子模块版本指针混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:54:28