场景:
Git回应:
更新被拒绝,因为您当前分支的提示已落后 它的远程对手。等
我是唯一一个黑客入侵这个分支的人 - 没有其他人在触摸它。远程分支实际上是后面的本地分支。我根本不应该拉。
(如果我拉,Git会报告两者之间的冲突,并迫使我将分支合并到自身中)
为什么会这样(可能)发生?我该如何诊断/修复它?
要明确的是,我没有在任何地方进行分支,没有其他人正在努力:
Remote: Commit A -------- Commit B
Local: Commit A -------- Commit B -------- Commit C
C是B的直接延续,不涉及分支。但是git认为C是A的分支:
Remote: Commit A -------- Commit B
------- Commit C
/
Local: Commit A -------- Commit B
不是;它是B的直接延续。
答案 0 :(得分:191)
你可能做了一些历史改写吗?您的本地分支与服务器上的分支不同。运行此命令以更好地了解发生的情况:
gitk HEAD @{u}
我强烈建议您尝试了解此错误的来源。要修复它,只需运行:
git push -f
-f
使其成为“强制推送”,覆盖服务器上的分支。当你在团队中工作时,这是非常危险的。但是
因为你是独立的,并确保你的当地国家是正确的
这应该没问题。如果不是这种情况,您可能会失去提交历史记录。
答案 1 :(得分:4)
当我试图推动开发分支时(我正在使用git flow),这发生在我身上。有人推动更新掌握。解决它我做了:
git co master
git pull
获取了这些更改。然后,
git co develop
git pull
哪个没做任何事。我认为尽管有错误信息,开发分支已经推出。现在一切都是最新的,没有错误。
答案 2 :(得分:3)
解决方案非常简单,对我有用。
试试这个:
git pull --rebase <url>
然后
git push -u origin master
答案 3 :(得分:0)
要进行诊断,请按this answer。
但要解决这个问题,知道你是唯一一个改变它的人,做:
1 - 备份你的项目(我只做git上的文件,。/ src文件夹)
2 - git pull
3 - 恢复你对许多&#34;混乱&#34;的备份。文件(带合并指标)
我试过git pull -s recursive -X ours
但是没有按照我想要的方式工作,它可能是一个选项,但先备份!!!
确保差异/变化(在git gui)没有。这是我的情况,没有什么可以合并,但github一直说我应该合并......