什么是;Git推送非快进更新被拒绝;什么意思?
我正在使用Git管理我的两台计算机和我的开发。我试图将更改提交到GitHub,但出现以下错误: 无法将某些引用推送到什么是;Git推送非快进更新被拒绝;什么意思?,git,version-control,Git,Version Control,我正在使用Git管理我的两台计算机和我的开发。我试图将更改提交到GitHub,但出现以下错误: 无法将某些引用推送到。为防止丢失历史记录,拒绝了非快进更新。在再次推送之前合并远程更改 这可能是什么原因造成的,我该如何修复 编辑: 拉式回购将返回以下内容: *分支主控->主控(非快进) 已经更新 推送仍然会导致上述错误。这意味着推送到远程存储库的其他提交与您的提交不同。您通常可以使用 git pull 在你推之前 最终,“快进”意味着提交可以直接应用于工作树的顶部,而无需合并。快进更新是指一方的
。为防止丢失历史记录,拒绝了非快进更新。在再次推送之前合并远程更改
这可能是什么原因造成的,我该如何修复
编辑:
拉式回购将返回以下内容:
*分支主控->主控(非快进)
已经更新
推送仍然会导致上述错误。这意味着推送到远程存储库的其他提交与您的提交不同。您通常可以使用
git pull
在你推之前
最终,“快进”意味着提交可以直接应用于工作树的顶部,而无需合并。快进更新是指一方的更改仅在另一方最近的提交之后进行,因此不需要进行任何合并。这意味着您需要在推送之前合并更改。GitHub有一个很好的部分,名为“” 这个错误一开始可能有点难以克服,不要害怕。
简单地说,git无法在远程上进行更改而不丢失提交,因此它拒绝推送
通常这是由另一个用户推到同一个分支引起的。您可以通过获取和合并远程分支,或者使用pull同时执行这两个操作来解决这个问题 在其他情况下,此错误是使用诸如
git commit--amend
或git rebase
等命令在本地进行破坏性更改的结果虽然您可以通过将
--force
添加到push
命令来覆盖遥控器,但只有在您完全确定这是您想要做的事情时,才应该这样做。强制推送可能会导致获取远程分支的其他用户出现问题,这被认为是不好的做法当有疑问时,不要用力推
Git无法像快进合并那样在远程设备上进行更改,如下图所示: 这不完全是您的情况,但有助于了解“快进”是什么(分支的
头
仅移动到新的最近提交)
“
分支主控->主控(非快进)已经是最新的”
“通常用于不跟踪其远程计数器部件的本地分支。例如,请参见此SO问题。“
或者两个分支相互连接,但与各自的历史不一致:
见“ 这意味着您的subversion分支和远程git主分支在某些方面不一致。
某些更改被推送/提交到另一个中不存在的更改。
启动gitk--all,它会给你一个错误的线索——在历史中寻找“分叉”
在这种情况下,您可能希望在推操作中使用force
git push origin master--force在将更改推送到远程repo/fork之前,您需要在本地合并并解决
冲突
1) 拉(提取和合并)
2) 推动变革
$ git push remote branch
您仍然可以通过使用--force
选项快速选择强制推送
,但应避免,因为这可能会导致更改丢失或对其他贡献者造成严重影响。切勿使用git-f
进行推送
,因为这可能会导致以后灾难性的后果
您只需对您当地的分支机构执行git pull
。
例:
然后做一个git推送,在我的例子中,同样的错误,我也不是唯一的开发者
所以我同时去提交和推送我的更改,在commit
对话框弹出窗口的底部看到:
…但我犯了一个巨大的错误,忘了点击获取
按钮查看我是否有最新的,而我没有
提交成功执行,但不是推送,而是给出相同的错误;
…即使其他开发人员没有像我一样修改相同的文件,我也无法提取最新的文件,因为出现了相同的错误
GUI解决方案
大多数时候,我更喜欢使用Sourcetree的GUI(图形用户界面)。这个解决方案可能并不理想,但这正是让我重新开始工作的原因,而不必担心我可能会丢失更改或影响其他开发人员最近的更新
第一步
右键单击“提交”按钮,撤消本地提交的更改,然后选择“将当前分支重置为此提交”
,如下所示:
步骤2
一旦所有加载微调器消失,Sourcetree完成加载上一个提交后,在窗口左上角,单击Pull
按钮
…然后将出现一个弹出对话框,并单击右下角的确定
按钮:
步骤3
拉取最新版本后,如果没有出现任何错误,请跳到步骤4(下面的下一步)。否则,如果此时发现任何合并冲突,就像我对我的Web.config
文件所做的那样:
…然后单击顶部的隐藏
按钮,将出现一个弹出对话框,您需要为更改编写一个描述性名称,然后单击确定
按钮:
…一旦Sourcetree完成了保存更改的文件,请重复步骤2中的操作(上一步),然后本地文件将有最新的更改。现在可以通过打开Sourcetree左栏底部的隐藏重新应用更改,使用箭头展开隐藏,然后右键单击选择应用隐藏“更改的描述性名称”
,然后选择<
$ git push remote branch
git pull origin 'your_local_branch'