跟随《Rebuilding Rails》操作时无法将rulers文件夹推送至GitHub
问题原因
- 你无法添加rulers目录的核心原因是该目录被Git识别为子模块,从你提交的状态信息里
(commit or discard the untracked or modified content in submodules)的提示可以确认,普通git add命令无法直接抓取子模块内的未提交内容;此外你之前执行的git add ruler拼写错误,少了末尾的s,就算是普通目录也无法正常添加。 - 推送被拒是因为远程的main分支存在你本地没有的提交,需要先合并远程变更再推送。
- 你提供的
.gitignore规则中没有排除rulers目录,排除规则不是本次问题的诱因。
解决步骤
情况1:你不需要将rulers作为独立的子模块维护(跟随教程学习的场景推荐选这个)
这种情况一般是你之前在rulers目录下误执行了git init生成了Git仓库配置,导致外层仓库把它识别为子模块,直接删除rulers内的Git配置即可:
# 删除rulers目录下的.git隐藏文件夹 rm -rf rulers/.git # 回到项目根目录重新添加rulers cd ../ git add rulers/ git commit -m "添加rulers目录所有内容"
情况2:你确实需要将rulers作为独立子模块维护
先提交子模块内的修改,再更新外层仓库的子模块引用:
# 进入rulers子模块目录提交内部修改 cd rulers git add . git commit -m "提交rulers内的修改" # 如果子模块有对应远程仓库,先推送子模块的修改 git push origin main # 回到外层项目根目录更新子模块引用 cd ../ git add rulers git commit -m "更新rulers子模块版本"
解决推送被拒问题
处理完rulers目录的提交后,先拉取远程最新变更合并到本地,再推送即可:
# 拉取远程main分支的变更并合并到本地 git pull origin main # 如遇代码冲突,手动解决冲突后执行git add、git commit提交冲突修复 # 最后推送所有本地提交 git push origin main
内容的提问来源于stack exchange,提问作者Zack Williams
相关产品推荐
相关产品推荐

