git pull non-fast-forward

$git push origin master ! [rejected] master -> master (non-fast-forward)

先获取远程仓库的更新

--shell-*$git fetch origin

把本地的修改与远程仓库的更新做一个合并

$git merge origin YOUR_BRANCH_NAME

或者获取远程的更新与本地的修改合并

git pull origin YOUR_BRANCH_NAME


如果以上方法都未能解决,说明情况有点复杂了,可能需要回退版本。


1、若本地修改已经做了commit操作,则需要回到修改前的版本

$git reset head^

或者

git reset head~1

如果是eclipse则通过右键Team>Replace With>HEAD Revision,前提是你已经对修改做了备份。

2、版本回退之后,把修改的内容暂存起来,以便更新成功后再次提交

$git add .
$git stash

如果是eclipse操作就没有这一步。

3、此时本地仓库比远程仓库落后一个版本,可以顺利的pull远程仓库与本地仓库进行合并

$git pull origin master:master

这里是master分支,根据实际情况调整

4、此时本地版本跟远程仓库的版本已经一致了,把之前暂存的修改弹出

$git stash pop

5、再次进行提交

$add .
$commit - m "info"

6、最后把修改提交到远程仓库

$git push origin master:master
git