Egit拒绝非快进

Jay*_*Jay 85 eclipse github egit

我在推送到github存储库时收到此消息.你能告诉我一步一步修复它吗?我只推了一次就成功了.但是,当我更新一个项目并尝试推送我的第二次提交时,它显示"主人拒绝非快进"并且不允许我推送.请解释一下程序.

小智 216

我有同样的问题,我能够解决它.afk5min是对的,问题是你从远程存储库上更改了你从中提取代码的分支.根据标准的git实践(http://git-scm.com/book/en/Git-Basics-Working-with-Remotes),您需要(现在)将远程存储库中的这些更改合并到您的本地更改中可以提交.这是有道理的,这会强制您进行其他更改并将它们合并到您的代码中,从而确保您的代码继续与其他更改一起运行.

无论如何,在步骤上.

  1. 配置'fetch'以获取最初从中提取的分支.

  2. 获取远程分支.

  3. 将远程分支合并到本地分支上.

  4. 在本地仓库中提交(合并)更改.

  5. 将更改推送到远程仓库.

详细地...

  1. 在eclipse中,打开视图'Git Repositories'.

  2. 确保您看到本地存储库,并可以将远程存储库视为子文件夹.在我的版本中,它被称为遥控器,然后我可以在其中看到远程项目.

  3. 找到指向左侧的绿色箭头,这是'fetch'箭头.右键单击并选择"配置提取".

  4. 您应该看到URI,确保它指向远程存储库.

  5. 查看弹出窗口的ref映射部分.我的是空的.这将指示您要获取的远程引用.点击"添加".

  6. 键入需要从远程存储库获取的分支名称.我是'主人'(顺便说一句,这里的下拉菜会很棒!!,现在,你必须输入它).继续弹出窗口,最后单击"完成".

  7. 点击"保存并获取".这将获取该远程引用.

  8. 查看本地存储库的"Branches"文件夹.您现在应该在远程文件夹中看到远程分支.再次,我看到'主'.

  9. 右键单击"分支"的"本地"文件夹中的本地分支,该文件夹名为"master".选择"合并",然后选择名为"origin/master"的远程分支.

  10. 通过合并进行处理.

  11. 提交对本地存储库的任何更改.

  12. 将更改推送到远程存储库.

  13. 去喝一杯美味的饮料,祝贺你自己.休息一天.

  • 这应该标记为答案.工作就像一个魅力.即使我没有添加任何文件(通常的README文件)在GitHub上为我的Eclipse项目创建回购时出现此问题.非常感谢您轻松按照一步一步的表达方式. (7认同)

BSe*_*zin 16

在我的情况下,我Force Update在推动时选择了复选框.它就像一个魅力.


afk*_*min 11

在此期间(当您更新项目时),已经对"主"分支进行了其他提交.因此,您必须首先提取这些更改才能推送更改.

  • 在这种情况下,git非常愚蠢,我将所有更改都推送到了远程。我是该项目上唯一的作品。为什么在地球上我需要先拉遥控器才能再次按下?拉出的更改将来自我本机 (2认同)

Yog*_*are 6

适用于Eclipse Luna + Eclipse Git 3.6.1

一世,

  1. 克隆的git存储库
  2. 在源代码中做了一些更改
  3. 从Git Staging View分阶段进行更改
  4. 最后,提交并推送!

我用EGit面对这个问题,这就是我修复它的方法.

是的,有人在我提交更改之前提交了更改.所以这些变化都被拒绝了.发生此错误后,更改实际上已提交到本地存储库.我不想只是Pull改变,因为我想linear history按照指示进行维护- 在什么情况下`git pull`会有害?

所以,我执行了以下步骤

  1. 从Git Repository的角度来看,右键单击相关的Git
    项目
  2. select Fetch from Upstream- 它获取远程更新(引用和对象),但不在本地进行更新.了解更多信息,请参阅'git pull'和'git fetch'有什么区别?
  3. 选择Rebase...- 这打开一个弹出窗口,点击Preserve merges during rebase查看为什么
    git的"rebase --preserve-merges"究竟做了什么(以及为什么?)
  4. 点击 Rebase button
  5. 如果有/是conflict(s),请转到步骤6,否则执行步骤11
  6. Rebase Result会出现一个弹出窗口,只需单击即可OK
  7. file comparator会打开,你需要修改left side file.
  8. 完成正确合并更改后,转到Git Staging视图
  9. stage the changes.即add to index
  10. 在同一视图中,单击Rebase- > Continue.重复7到10,直到所有冲突都得到解决.
  11. History视图中,选择您的提交行并选择Push Commit
  12. 选择Rebase Commits of local.......复选框并单击下一步 参考原因 - Git:从上游转向开发分支
  13. 点击 Finish

注意:如果您有多个本地存储库提交,则需要在一次提交中压缩它们以避免多次合并.


Vin*_*uri 5

配置 当收到拒绝消息时推送代码后,单击“配置”,然后单击“添加规范”,如下图所示

源参考和目标参考 下拉并单击 ref/heads/yourbranchname,然后再次单击“添加规范”

在此输入图像描述 确保选择强制更新

在此输入图像描述 最后保存并推送代码到repo