“Git推送非快进更新被拒绝”是什么意思?

我使用Git来pipe理我的两台电脑和我的开发。 我试图提交到GitHub的变化,我得到的错误。

未能推动一些裁判<repo> 。 为了防止您丢失历史logging,非快进更新被拒绝。 在再次推送之前合并远程更改。

什么可能导致这个,我该如何解决这个问题?

编辑:

拉回购回报如下:

*分支主 – >主(非快进)已经是最新的

推仍然给了我上述的错误。

GitHub有一个很好的部分叫做“ 处理”非快进“错误 ”

起初这个错误可能有些压倒性的,不要害怕。
简单地说,git不能在不丢失提交的情况下在远程进行更改,因此它拒绝推送
通常这是由另一个用户推送到同一分支引起的。 你可以通过获取和合并远程分支来解决这个问题,或者使用pull来同时执行。

在其他情况下,这个错误是使用像git commit --amendgit rebase这样的命令在本地进行的破坏性更改的结果。
虽然您可以通过向push命令添加--force来覆盖远程,但只有在您确信这是您想要执行的操作时才应该这样做。
强制推送可能会导致已经提取远程分支的其他用户出现问题,这被认为是不好的做法。 如有疑问,请勿强行推送


Git无法像远程合并那样对远程进行更改, Visual Git参考资料中的说明如下所示:

替代文字

这不完全是你的情况,但有助于看到“快进”是什么(分支的HEAD只是移动到一个新的更新的提交)。


branch master->master (non-fast-forward) Already-up-to-date “通常用于不跟踪其远程对端部分的本地分支机构。
比如看到这个问题“ git pull说最新但是git push拒绝非快速前进 ”。
或者这两个分支有联系,但是不同意他们各自的历史:
看到“ 永无止境的GIT故事 – 我在这里做错了什么?

这意味着你的Subversion分支和你的远程git master分支不同意某些事情。
一些变化被推到/承诺到另一个不在其中。
开始gitk --all ,它应该给你一个线索,哪里出了问题 – 寻找历史上的“叉子”。

这意味着已经有其他提交到远程仓库的提交不同于您的提交。 你通常可以解决这个问题

 git pull 

在你推之前

最终,“快进”意味着提交可以直接应用在工作树的顶部而不需要合并。

我发现这个快速描述是最清晰的。

http://365git.tumblr.com/post/504140728/fast-forward-merge

快进更新是在另一侧最近一次提交之后唯一改变一方的地方,所以不需要进行任何合并。 这就是说,你需要合并你的修改,然后才能推送。