找到错误来源:git push被拒绝:错误:无法推送一些引用

时间:2013-11-08 20:56:36

标签: git git-push

在其中一个团队中,当使用git时,我们一次又一次地遇到“git push被拒绝:错误:未能推送一些参考”

  

到git@git.far-mteria.org:ledy / thakres.git! [拒绝]
  b_stable - > b_stable(非快进)错误:无法推送一些   refs to'git@git.far-mteria.org:ledy / thakres.git'为了防止你   失去历史,非快进更新被拒绝合并   在再次推送之前进行远程更改(例如'git pull')。请参阅'注意   关于'git push --help'的快进部分了解详情。

当然,我们可以继续使用“-f”作为quick'n'dirty - 而不是真正的解决方案。

但是,我们想知道这是从哪里来的,或者是什么原因导致这种拒绝。

git不能详细说明它拒绝的原因,也许是导致冲突的文件?

我们对.gitignore有疑问,导致另一个项目出现类似问题。

3 个答案:

答案 0 :(得分:1)

Git不会一次推送一个单独的文件,它会推送完整的提交树,例如,“这是整个项目看待一个提交的方式,然后它看起来像另一个提交,现在终于看起来像这样“。

绘制为提交图,这是例如非常线性的:

...--D--E--F--G    <-- master

被拒绝的是,你所提供的“最后”并不是遥控器之前“最终”的“前进”,也就是说,你错过了一些“前进”,即“某人”别人投入。你有:

...--D             <-- master

然后您添加了提交EFG。但是当你这样做时,其他人选择了以D结尾的一系列提交并添加了他或她自己的提交H

...--D--H          <-- master

您建议丢弃H并使提交序列看起来像您的序列:D后跟E - 通过 - {{ 1}}这就是一切的结束。

Git告诉你分支名称,它具有您要求丢弃的进度,在本例中为G。您需要master进度然后保留它,可能由git fetch创建合并提交git merge

M

或者可能在 H------ / \ ...--D M <-- master \ / E--F--G

之上“重新定位”您的一系列提交
H

(其中...--D--H-E'-F'-G' <-- master E'F'是“G'EF中已更改内容的版本”只需改变一下就可以将它们应用到G之上 - 通常只是提交父母,偶尔会涉及更多的工作。)

答案 1 :(得分:1)

做一个git pull,然后尝试推送,这就是消息所说的内容。

答案 2 :(得分:0)

这可能是一个很难找到的问题,我有几次,当磁盘不同步或过载,高iowait。

git show-branch --list --all是否担心暧昧的分支名称:&#34;警告:refname xyz含糊不清&#34;?

如果是,请尝试

  

$ rm -rf .git / refs / heads / origin / xyz

     

$ git branch --set-upstream lkgr origin / xyz