在其中一个团队中,当使用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有疑问,导致另一个项目出现类似问题。
答案 0 :(得分:1)
Git不会一次推送一个单独的文件,它会推送完整的提交树,例如,“这是整个项目看待一个提交的方式,然后它看起来像另一个提交,现在终于看起来像这样“。
绘制为提交图,这是例如非常线性的:
...--D--E--F--G <-- master
被拒绝的是,你所提供的“最后”并不是遥控器之前“最终”的“前进”,也就是说,你错过了一些“前进”,即“某人”别人投入。你有:
...--D <-- master
然后您添加了提交E
,F
和G
。但是当你这样做时,其他人选择了以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'
,E
和F
中已更改内容的版本”只需改变一下就可以将它们应用到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