git push error. ! [rejected] master -> master (non-fast-forward)

 错误提示:

Cheetah@xxxx MINGW64 /e/Projs/enft/data/cv_key_frame (master)
$ git push
To github.com:AnthonyGIS/video_frame.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:AnthonyGIS/video_frame.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Cheetah@xxxx MINGW64 /e/Projs/enft/data/cv_key_frame (master)

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

方法1

强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容。

如果远程仓库是刚建的,没有代码 或者你确定远程仓库中的代码没有用了,可以这样操作,尽量避免这种操作方法。

git push -f

方法2

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

$ git fetch
$ git merge

如果在git merge的时候出现

fatal: refusing to merge unrelated histories

可以使用,git pull origin master --allow-unrelated-histories,来处理一下。

 

继续git merge

若,出现:

fatal: You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you merge.

是我们没有提交当前的变化, git add .,git commit -am "提交信息",然后再来一次git merge,然后ok.

最后 git push。(git push origin master)。

提示Already up-to-date. 就好了,上传完成。

参考

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

原文地址:https://www.cnblogs.com/arxive/p/11146456.html