Egit拒绝了非快进
我推送到github存储库时得到这个消息。 你能告诉我一步一步的程序来解决它吗? 我只推了一次,成功了。 但是,当我更新了一个项目,并试图推动我的第二次提交,它显示“主拒绝非快进”,并不允许我推。 请解释程序。
我有这个相同的问题,我能够解决它。 afk5min是正确的,问题是你拉代码的分支已经改变了远程仓库。 根据标准的git实践( http://git-scm.com/book/en/Git-Basics-Working-with-Remotes ),您需要(现在)将远程存储库中的这些更改合并到本地更改中可以提交。 这是有道理的,这迫使你采取其他的变化,并将其合并到您的代码,确保您的代码继续与其他更改的地方function。
无论如何,在步骤。
-
configuration“获取”来获取您最初从中提取的分支。
-
取得远程分支。
-
将该远程分支合并到本地分支上。
-
提交您的本地回购(合并)更改。
-
推动改变到远程回购。
详细…
-
在eclipse中,打开'Git Repositories'视图。
-
确保您看到您的本地存储库,并可以将远程存储库看作子文件夹。 在我的版本中,它被称为远程,然后我可以在其中看到远程项目。
-
寻找指向左边的绿色箭头,这是“取”箭头。 右键单击并select“configuration提取”。
-
你应该看到这个URI,确保它指向远程仓库。
-
查看popup窗口的ref映射部分。 矿是空的。 这将表明你想要获取哪个远程引用。 点击“添加”。
-
input您需要从远程存储库中获取的分支名称。 我是“主人”(顺便说一下,这里的下拉菜单很棒!现在,你必须input它)。 继续popup,最后点击“完成”。
-
点击“保存并获取”。 这将获取该远程引用。
-
查看本地存储库的“分支”文件夹。 您现在应该看到远程文件夹中的远程分支。 我再次看到“主人”。
-
右键单击“分支”的“本地”文件夹中的本地分支,名称为“主”。 select“合并”,然后select名为“origin / master”的远程分支。
-
通过合并处理。
-
将任何更改提交到本地存储库。
-
将您的更改推送到远程存储库。
-
去喝一杯美味的饮料,祝贺你自己。 rest一天rest。
与此同时(当你正在更新你的项目时),其他的提交已经被提交给“主”分支。 因此,您必须首先执行这些更改才能推动您的更改。
在我的情况下,我推动时select了Force Update
checkbox。 它像一个魅力工作。
适用于Eclipse Luna + Eclipse Git 3.6.1
一世,
- 克隆的git仓库
- 对源代码进行了一些更改
- 从Git Staging View分阶段进行更改
- 最后,承诺和推!
我和EGit遇到了这个问题,这里是我如何解决这个问题。
是的,在我提交更改之前有人提交了更改。 所以更改被拒绝。 在这个错误之后,这些更改实际上被提交到本地存储库。 我不想仅仅因为我想维护linear history
而引起这些变化 – 在哪些情况下,git pull会有害?
所以,我执行了以下步骤
- 从Git Repository的angular度来看,右键单击相关的Git
项目 - select
Fetch from Upstream
– 它获取远程更新(参考和对象),但不在本地进行更新。 有关更多信息,请参阅“git pull”和“git fetch”之间的区别是什么? - select
Rebase...
– 打开一个popup窗口,Preserve merges during rebase
点击Preserve merges during rebase
查看原因
git的“rebase –preserve-merges”究竟干什么(为什么?) - 点击
Rebase button
- 如果有
conflict(s)
,则转到步骤6,否则转到步骤11 - 会出现一个
Rebase Result
popup窗口,只需点击OK
-
file comparator
会打开,你需要修改left side file
。 - 一旦你完成了正确的合并更改,转到
Git Staging
视图 -
stage the changes
。 即add to index
- 在同一个视图上,点击
Rebase
– >Continue
。 重复7到10,直到所有冲突得到解决。 - 从
History
视图中select您的提交行并selectPush Commit
- select“
Rebase Commits of local.......
checkbox,然后单击“下一步”。 请参考原因: Git:从上游开发分支 - 点击
Finish
注意:如果您有多个本地存储库提交,则需要在一次提交中压缩它们以避免多次合并。
打开混帐视图:
1-select您的项目并select合并2-select远程追踪3-点击确定
Git会将远程分支与本地存储库合并
4-然后推
我发现你必须在Git的最新的提交。 所以这些是要采取的步骤:1)确保你没有在同一个文件上工作,否则你会遇到一个DITY_WORK_TREE错误。 2)拉最新的变化。 3)提交你的更新。
希望这可以帮助。
- 去Github为你的新代码创build一个回购。
- Eclise中使用新的https或ssh url时,
这个错误意味着远程仓库已经有其他的提交,并且在你的本地分支之前。
我尝试做一个git pull,然后是git push。 如果他们没有冲突的变化,git拉取得最新的代码到我的本地分支,同时保持我的变化不变。
然后一个git push将我的更改推送到主分支。