为何向刚创建的Azure DevOps仓库推送时出现分支落后报错?
解决Azure DevOps仓库推送失败的问题
你的判断完全正确:远程仓库创建时自动生成的README.md、.gitignore提交,导致远程分支的提交记录比本地分支多一条。fetch命令只是拉取了远程的提交信息到本地,但并没有将这些内容合并到你的本地分支,所以推送时会被拒绝。
根据本地仓库的状态,你可以选择以下解决方案:
情况1:本地仓库还没有任何提交记录
- 执行
git pull --rebase origin main(如果你的默认分支是master,就替换成master)--rebase参数能让本地分支的提交(这里为空)衔接在远程提交之后,保持提交历史的整洁
- 完成后执行
git push origin main即可正常推送
情况2:本地仓库已有自己的代码提交
如果本地已经做了提交,不想丢失这些内容,有两种方式处理:
方式一:合并远程提交到本地
- 确保拉取最新远程信息:
git fetch origin - 合并远程分支到本地:
git merge origin main- 如果出现文件冲突(比如本地也有README.md或.gitignore),手动修改冲突文件,然后执行
git add .和git commit完成合并
- 如果出现文件冲突(比如本地也有README.md或.gitignore),手动修改冲突文件,然后执行
- 合并完成后执行
git push origin main
方式二:变基(保持提交历史线性)
- 拉取最新远程信息:
git fetch origin - 执行变基命令:
git rebase origin main- 若遇到冲突,解决冲突后执行
git rebase --continue,直到变基完成
- 若遇到冲突,解决冲突后执行
- 最后执行
git push origin main
额外小技巧
如果本地仓库是刚初始化的,还没添加任何文件,也可以直接克隆远程仓库,再把本地项目文件复制进去提交:
- 删除本地的
.git文件夹(如果已经初始化) - 执行
git clone <你的Azure DevOps仓库地址> - 将本地项目文件复制到克隆下来的文件夹中,执行
git add .、git commit -m "初始化项目"、git push即可
内容的提问来源于stack exchange,提问作者1026
相关产品推荐
相关产品推荐

