Git提交含外部文件夹且Push被拒的问题排查求助
Git推送异常问题的解决方法
问题说明
常规推送代码时遇到两个问题:
- Git错误地尝试推送项目外的所有文件夹
- 推送触发非快进式拒绝错误,具体报错如下:
PS C:\ecommercejib> git push --set-upstream origin main
推送至 https://github.can/JuanIgnacioBe11avitis/ecommercejib
! [被拒绝] main -> main (非快进式更新)
error: 无法推送部分引用至 'https://github.com/JuanIgnacioBe11avitis/ecommercejib'
提示:更新被拒绝,因为当前分支的提交落后于对应的远程分支。
提示:在再次推送前,请整合远程的变更(例如使用 'git pull ...')。
提示:详情请查看 'git push --help' 中的「关于快进式更新的说明」。
PS C:\ecommerjic>
已尝试删除重建仓库、通过git remote -v确认远程地址正确,但问题未解决。
分步解决
一、修复"推送项目外文件夹"问题
- 确认终端路径正确性
确保当前终端处于项目根目录(即包含.git文件夹的ecommercejib目录),从报错最后一行看路径疑似拼写错误,先切换到正确路径:cd C:\ecommercejib - 重置Git追踪范围
- 查看当前Git追踪的所有文件,确认是否包含项目外内容:
git ls-files - 移除所有已追踪的文件(本地文件不会被删除):
git rm -r --cached . - 检查并完善
.gitignore文件,明确排除项目外的目录和无需追踪的文件,只保留项目内需要提交的内容。 - 重新添加项目内文件到Git:
git add . - 提交这次修正:
git commit -m "修正Git追踪范围,仅包含项目内文件"
- 查看当前Git追踪的所有文件,确认是否包含项目外内容:
二、解决"非快进式拒绝"问题
该错误是因为本地分支的提交进度落后于远程分支,即使重建仓库,远程可能仍有遗留历史,按以下步骤处理:
拉取远程最新代码
如果本地没有未提交的重要变更,直接拉取并合并远程分支:git pull origin main若出现冲突,手动解决冲突后再提交。
强制推送(仅在确认远程内容可覆盖时使用)
如果你确定远程分支的旧内容可以被覆盖(比如重建仓库后远程残留了无效提交),执行强制推送:git push -f origin main注意:强制推送会彻底覆盖远程分支历史,操作前务必确认。
重新关联远程分支
若分支关联存在异常,先取消关联再重新设置:git branch --unset-upstream main git push --set-upstream origin main
额外检查项
- 确认远程仓库地址无误:
git remote -v输出的URL需与GitHub仓库地址完全一致(注意报错中的URL存在拼写错误github.can,正确应为github.com) - 检查当前操作分支:执行
git branch确认处于main分支
内容的提问来源于stack exchange,提问作者user20911687
相关产品推荐
相关产品推荐

