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

什么是;Git推送非快进更新被拒绝;什么意思?,git,version-control,Git,Version Control,我正在使用Git管理我的两台计算机和我的开发。我试图将更改提交到GitHub,但出现以下错误: 无法将某些引用推送到。为防止丢失历史记录,拒绝了非快进更新。在再次推送之前合并远程更改 这可能是什么原因造成的,我该如何修复 编辑: 拉式回购将返回以下内容: *分支主控->主控(非快进) 已经更新 推送仍然会导致上述错误。这意味着推送到远程存储库的其他提交与您的提交不同。您通常可以使用 git pull 在你推之前 最终,“快进”意味着提交可以直接应用于工作树的顶部,而无需合并。快进更新是指一方的

我正在使用Git管理我的两台计算机和我的开发。我试图将更改提交到GitHub,但出现以下错误:

无法将某些引用推送到
。为防止丢失历史记录,拒绝了非快进更新。在再次推送之前合并远程更改

这可能是什么原因造成的,我该如何修复

编辑:

拉式回购将返回以下内容:

*分支主控->主控(非快进) 已经更新


推送仍然会导致上述错误。

这意味着推送到远程存储库的其他提交与您的提交不同。您通常可以使用

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'