我在推送到github存储库时收到此消息。你能告诉我一步一步修复它吗?我只推了一次就成功了。但是,当我更新一个项目并尝试推送我的第二次提交时,它显示“主人拒绝非快进”并且不允许我推送。请解释一下程序。
答案 0 :(得分:212)
我有同样的问题,我能够解决它。 afk5min是对的,问题是你从远程存储库上更改了你从中提取代码的分支。根据标准的git实践(http://git-scm.com/book/en/Git-Basics-Working-with-Remotes),您需要(现在)在提交之前将远程存储库中的这些更改合并到本地更改中。这是有道理的,这会强制您进行其他更改并将它们合并到您的代码中,从而确保您的代码能够继续使用其他更改。
无论如何,继续步骤。
配置'fetch'以获取您最初从中提取的分支。
获取远程分支。
将远程分支合并到您的本地分支。
在本地仓库中提交(合并)更改。
将更改推送到远程仓库。
详细......
在eclipse中,打开视图'Git Repositories'。
确保您看到本地存储库,并可以将远程存储库视为子文件夹。在我的版本中,它被称为遥控器,然后我可以在其中看到远程项目。
查找指向左侧的绿色箭头,这是“获取”箭头。右键单击并选择“配置提取”。
您应该看到URI,确保它指向远程存储库。
查看弹出窗口的ref映射部分。我的是空的。这将指示您要获取的远程引用。点击“添加”。
输入您需要从远程存储库获取的分支名称。我是'主人'(顺便说一句,这里的下拉菜会很棒!!,现在,你必须输入它)。继续弹出窗口,最后点击“完成”。
点击“保存并获取”。这将获取该远程引用。
查看本地存储库的“Branches”文件夹。您现在应该在远程文件夹中看到远程分支。再一次,我看到'大师'。
右键单击“分支”的“本地”文件夹中的本地分支,该分支名为“master”。选择“合并”,然后选择名为“origin / master”的远程分支。
通过合并进行处理。
提交对本地存储库的任何更改。
将您的更改推送到远程存储库。
去喝一杯美味的饮料,祝贺你自己。休息一天。
答案 1 :(得分:14)
在我的情况下,我在推送时选择了Force Update
复选框。它就像一个魅力。
答案 2 :(得分:10)
与此同时(当您更新项目时),已经对“主”分支进行了其他提交。因此,您必须先提取这些更改才能推送更改。
答案 3 :(得分:6)
适用于Eclipse Luna + Eclipse Git 3.6.1
I,
我用EGit面对这个问题,这就是我修复它的方法..
是的,有人在我提交更改之前提交了更改。所以这些变化被拒绝了。
发生此错误后,更改实际上已提交到本地存储库。
我不想只是Pull
这些更改,因为我想按照In what cases could `git pull` be harmful?
linear history
所以,我执行了以下步骤
Fetch from Upstream
- 它会获取远程更新(引用和对象),但不会在本地进行更新。有关详细信息,请参阅What is the difference between 'git pull' and 'git fetch'? Rebase...
- 这会打开一个弹出窗口,点击Preserve merges during rebase
查看原因Rebase button
conflict(s)
,请转到步骤6,否则执行步骤11 Rebase Result
弹出窗口,只需点击OK
file comparator
会打开,您需要修改left side file
。 Git Staging
查看stage the changes
。即add to index
Rebase
- > Continue
。重复7到10,直到所有冲突得到解决。History
视图中,选择您的提交行并选择Push Commit
Rebase Commits of local.......
复选框,然后点击下一步。参考原因 - Git: rebase onto development branch from upstream Finish
注意:如果您有多个本地存储库提交,则需要在一次提交中压缩它们以避免多次合并。
答案 4 :(得分:3)
打开git视图:
1-选择您的项目并选择合并 2-选择远程跟踪 3-单击确定
Git会将远程分支与本地存储库
合并4-然后按
答案 5 :(得分:2)
Configure 在收到拒绝消息后推送代码后,单击配置,然后单击添加规格,如图所示
答案 6 :(得分:1)
此错误表示远程存储库已经有其他提交,并且已经超出了您的本地分支 我尝试做一个git pull然后是git push。如果它们没有冲突的变化,git pull会将最新的代码发送到我的本地分支,同时保持我的更改完好无损 然后git push将我的更改推送到主分支。
答案 7 :(得分:0)
我发现你必须是最新的git提交。 所以这些是采取的步骤: 1)确保您没有处理相同的文件,否则您将遇到DITY_WORK_TREE错误。 2)拉最新的变化。 3)提交您的更新。
希望这有帮助。
答案 8 :(得分:-1)