经验分享

git 推送错误 ! [rejected] master -> master (non-fast-forward)解决方案

错误1——【 git push -u origin master 推送到远程时报错】

git推送报non-fast-forward,原因是远程仓库已有部分代码,Git不允许直接覆盖。常规做法是先git fetch取回远程提交、git merge合并后再push;仅当远程是刚建的空仓库时才考虑git push -f强推。若merge报refusing to merge unrelated histories,执行git pull origin master --allow-unrelated-histories;再遇MERGE_HEAD exists则先add并commit当前变更,重新merge后推送成功。

  • non-fast-forward根因:远程已有代码,禁止直接覆盖
  • 安全方案:git fetch加git merge后再push
  • unrelated histories需--allow-unrelated-histories放行
  • MERGE_HEAD exists说明有未完成的合并,先commit再merge
  • push -f仅适合全新空仓库,尽量避免

错误1——【 git push -u origin master 推送到远程时报错】

错误信息

3e776807598880bac076ef2f7d31594a.png

问题(Non-fast-forward)的出现原因在于:git仓库中已经有一部分代码,所以它不允许你直接把你的代码覆盖上去。于是你有2个选择方式:

1、强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容,如果远程仓库是刚建的,没有代码,可以这样操作,尽量避免这种操作方法。

git push -f

2、先把git的东西fetch到你本地然后merge后再push

$ git fetch
$ git merge

3、在使用的时候,git merge,又出现了以下的问题

xu:QProj xiaokai$ git merge
fatal: refusing to merge unrelated histories

对于这个问题。

原创不易,完成人机校验,阅读全文

常见问题

git push被拒绝non-fast-forward怎么处理?

先git fetch拉取远程提交,git merge合并本地修改后重新push;确认远程可覆盖才用git push -f。出现unrelated histories时给pull或merge追加--allow-unrelated-histories参数。

相关推荐