本地Git仓库推送至GitHub远程main分支报错问题求助
问题根源
- 你创建GitHub远程仓库时勾选了自动生成README、.gitignore或许可证的选项,远程已有初始提交,本地未同步就直接推送所以被拒绝
- 本地从未创建过main分支,直接执行
git checkout main就会触发pathspec匹配失败的报错 - 拉取远程内容时本地和远程都有.gitignore文件,重名内容不一致导致合并被终止
解决方案
方案一:保留本地现有所有代码
按顺序执行以下命令:
# 暂存本地当前未提交的改动 git add . git stash # 拉取远程main分支内容并和本地内容变基合并 git pull origin main --rebase # 恢复之前暂存的本地改动 git stash pop
如果执行后提示文件冲突,手动打开冲突文件修改为你需要的最终内容,再执行:
# 标记冲突已解决,替换为你实际的冲突文件名 git add .gitignore 其他冲突文件名 # 提交合并结果 git commit -m "合并远程初始内容与本地代码" # 推送到远程main分支 git push origin main
如果执行过程中提示本地不存在main分支,先执行以下命令创建本地main分支并绑定远程main分支:
git checkout -b main origin/main
方案二:无需保留本地现有代码,直接同步远程
操作更简单,适合本地代码还没写多少的场景:
- 打开本地仓库文件夹,开启系统显示隐藏文件选项,删除其中的
.git隐藏文件夹 - 执行克隆命令直接拉取远程仓库到本地:
git clone https://github.com/my_github/my_repo.git
- 把你需要上传的所有代码复制到克隆生成的
my_repo文件夹内,再执行推送:
cd my_repo git add . git commit -m "新增项目初始代码" git push origin main
后续避坑提示
- 以后创建GitHub远程仓库时,如果要上传本地已有代码,不要勾选任何自动生成初始化文件的选项,直接创建空远程仓库即可避免这类冲突
- 提前配置git默认分支为main后不需要再手动切换分支,配置命令为
git config --global init.defaultBranch main
内容的提问来源于stack exchange,提问作者AK91
相关产品推荐
相关产品推荐

