我在多个开发人员之间共享的 git 存储库上遇到问题。一个分支似乎丢失了(有点),当我尝试使用此分支推送到远程存储库时,我收到以下消息...
To git@hades:bbis.git
* [new branch] dompdf0.52 -> dompdf0.52
! [rejected] live -> live (non-fast-forward)
error: failed to push some refs to 'git@hades:bbis.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
该仓库有 3 个分支:
- dompdf0.52 是一个临时分支,我在其中升级了 dompdf(这没问题)
- 大师
- live(这是有问题的分支)
我是唯一使用 live 分支(用于部署到 live 服务器)的开发人员,我直接在这个分支中做了一些工作(我知道这不是一个好主意,但这是一个错误)并在本地提交。当我尝试推送时出现此错误。
其他开发人员看不到 live
分支或 dompdf0.5.2
分支(我创建了这两个分支,但已将它们推送到远程存储库 - 他们甚至显示在 gitweb 界面中作为 HEADS)。即使开发人员执行git pull --all
,它仍然不会 pull 下这些分支。
另一个奇怪的现象是,当在 gitweb 上查看日志时,它只显示 master
,但是当查看 live
分支的短日志时,它显示 live
与 master
位于 master
短日志中的位置相同。
我只是对这里发生的事情有点困惑,从我所看到的 live
分支位于远程存储库中,但没有显示在主存储库日志中。
有人有什么想法吗?如果您需要来自 gitk
编辑:我想提一下,我尝试通过执行 git fetch
和 git pull
来解决错误消息,但无济于事。我唯一没有尝试过的是 git push --force ,因为我不想丢失我的历史记录。
编辑2:运行sehe提供的脚本后,我收到以下内容:
fatal: ref ed2cacdacad22c75ca765cfc996304c8c7c8a654 is not a symbolic ref
fatal: ref 98c37bd8a9ef2fc16e882c17b4c04f417ae7b2b2 is not a symbolic ref
最佳答案
您所遇到的只是您不被允许推送,因为有人在其间更新了分支。您需要先 pull 此分支,然后才能推送更改。 git pull --all 不起作用的原因可能是因为您的本地实时分支未设置为跟踪 origin/live
试试这个:
git branch --set-upstream live origin/live
git checkout live
git pull
git push
关于git - 无法将本地分支推送到远程 Git 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6369925/