git - 无法将本地分支推送到远程 Git 存储库

标签 git branch git-branch

我在多个开发人员之间共享的 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 分支的短日志时,它显示 livemaster 位于 master 短日志中的位置相同。

我只是对这里发生的事情有点困惑,从我所看到的 live 分支位于远程存储库中,但没有显示在主存储库日志中。

有人有什么想法吗?如果您需要来自 gitk

的任何图像,请告诉我

编辑:我想提一下,我尝试通过执行 git fetchgit 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/

相关文章:

git - 克隆空的、*裸* git 存储库的最直接方法是什么?

git - 在 visual studio 中意外删除分支 git

git - 什么时候删除本地分支是安全的?

git - 在 git rebase 期间查找分支名称

git - 在 git 分支中“固定”文件的特定版本

git 更改分支的起源(rebase)

Git merge 展平

git - 如何获取Gitlab CI中当前分支的名称

git - 如何使用 git (git config --global)?

branch - TFS - 如何创建分支