“Git推送非快进更新被拒绝”是什么意思?
我使用Git来pipe理我的两台电脑和我的开发。 我试图提交到GitHub的变化,我得到的错误。
未能推动一些裁判
<repo>
。 为了防止您丢失历史logging,非快进更新被拒绝。 在再次推送之前合并远程更改。
什么可能导致这个,我该如何解决这个问题?
编辑:
拉回购回报如下:
*分支主 – >主(非快进)已经是最新的
推仍然给了我上述的错误。
GitHub有一个很好的部分叫做“ 处理”非快进“错误 ”
起初这个错误可能有些压倒性的,不要害怕。
简单地说,git不能在不丢失提交的情况下在远程进行更改,因此它拒绝推送 。
通常这是由另一个用户推送到同一分支引起的。 你可以通过获取和合并远程分支来解决这个问题,或者使用pull来同时执行。在其他情况下,这个错误是使用像
git commit --amend
或git 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
在你推之前
最终,“快进”意味着提交可以直接应用在工作树的顶部而不需要合并。
我发现这个快速描述是最清晰的。
快进更新是在另一侧最近一次提交之后唯一改变一方的地方,所以不需要进行任何合并。 这就是说,你需要合并你的修改,然后才能推送。