本地Git仓库推送至GitHub远程失败,提示远程含本地未有的内容
解决Git推送被拒绝(fetch first)的问题
问题原因
你在GitHub创建仓库时大概率勾选了生成README、LICENSE或.gitignore这类默认文件,导致远程main分支已有提交记录;而本地是通过git init新建的空仓库,和远程仓库没有共同的提交历史,所以Git拒绝直接推送(防止意外覆盖远程内容)。另外你之前的推送命令写错了,正确格式应该是git push <远程名称> <分支名>,也就是git push new-remote main,而不是git push new remote。
解决方法
方法一:合并远程内容后推送(推荐,保留远程文件)
这种方式会把远程的默认文件拉到本地合并,之后再推送:
- 拉取远程分支并合并(因为本地和远程是独立仓库,必须加
--allow-unrelated-histories参数):
git pull new-remote main --allow-unrelated-histories
- 如果合并时出现冲突,打开冲突文件手动解决(比如README文件的内容冲突),解决后提交:
git add . git commit -m "合并远程main分支内容"
- 最后正常推送:
git push new-remote main
方法二:强制推送(覆盖远程内容,谨慎使用)
如果你确定不需要GitHub仓库里的默认文件,可以直接强制推送本地内容覆盖远程:
git push new-remote main -f
⚠️ 注意:强制推送会彻底删除远程仓库的现有内容,替换成本地的,只有在你确认远程内容没用时才用这个方法。
内容的提问来源于stack exchange,提问作者Mohamed Abdul mueen
相关产品推荐
相关产品推荐

