"Git推动非快进更新被拒绝"是什么意思?

Mos*_*she 144 git version-control

我正在使用Git来管理我的两台计算机和我的开发.我正在尝试将更改提交给GitHub,我收到错误.

无法推送一些参考<repo>.为了防止您丢失历史记录,拒绝了非快进更新.在再次推送之前合并远程更改.

可能导致这种情况的原因是什么?

编辑:

拉回购物品会返回以下内容:

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

推送仍然给我上述错误.

Von*_*onC 131

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

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

在其他情况下,此错误是通过使用git commit --amend或等命令在本地进行的破坏性更改的结果git rebase.
虽然你可以通过添加覆盖远程--forcepush命令,你应该只能这样做,如果你是绝对肯定这是你想要做什么.
强制推送可能会导致已经获取远程分支的其他用户出现问题,并被视为不良做法.如有疑问,请勿强行推动.


Git不能像快速合并一样对遥控器进行更改,Visual Git Reference就是这样说的:

替代文字

这不完全是你的情况,但有助于看到"快进"是什么(HEAD分支的简单地移动到新的更新的提交).


" branch master->master (non-fast-forward) Already-up-to-date"通常用于不跟踪其远程对应部分的本地分支.
例如,参见这个问题" git pull说最新但git push拒绝非快进 ".
或者这两个分支是相连的,但不同意他们各自的历史:
见" 永无止境的GIT故事 - 我在这里做错了什么? "

这意味着您的subversion分支和远程git master分支不同意某些内容.
某些更改被推送/提交到一个不在另一个中的更改.
火了gitk --all,它应该给你一个关于出了什么问题的线索 - 在历史中寻找"叉子".


min*_*ate 52

这意味着已经推送到远程存储库的其他提交与您的提交不同.你通常可以用一个解决这个问题

git pull
Run Code Online (Sandbox Code Playgroud)

在推之前

最终,"快进"意味着提交可以直接应用于工作树的顶部而无需合并.

  • 这对我有用!我忘记了在存储库站点上更改了readme.md! (2认同)

bdu*_*kes 12

快进更新是一方在最近一次提交之后唯一的更改,因此不需要进行任何合并.这表示您需要在推送之前合并您的更改.


Abh*_*mas 8

永远不要做某事git -fpush因为它可能会导致以后的灾难性后果。

你只需要做一个git pull你当地的分支机构。

前任:

git pull origin 'your_local_branch'
Run Code Online (Sandbox Code Playgroud)

然后做一个 git push


小智 7

在这种情况下,您可能需要对推操作使用强制

git push origin master --force

  • 谨防“--force”的阴暗面。 (5认同)
  • 这是不对的。github的全部源将被删除并推送,只有你的新源旧源被删除 (2认同)