从git rebase中恢复出错了

时间:2017-01-18 15:08:03

标签: git github git-rebase

以下是发生的事情: 当我在推送时注意到我的3提交被拒绝因为“Bob”直接推送给主人时,我正在处理我的仓库的主分支。

为了解决这个问题,我通过

创建了一个“辅助”分支
git checkout -b secondary
git push -u origin secondary

此时我犯了一个错误,我忘了把git pull origin master(bob补丁)变成二级。我做了一个git rebase,删除了由“bob”完成的9次提交然后做了一个git push -f。结果:所有bob提交都永远离开了两个分支!

幸运的是,在那次失败之前,我有了第二台机器,它在主机上落后了,我有2次提交推动git拉。由于合并冲突拉动失败,我做了一次重置和git fetch并把它留在那里,以为我会在修复bob问题后这样做。该机器当前状态为:

On branch master
Your branch and 'origin/master' have diverged,
and have 2 and 22 different commits each, respectively.
  (use "git pull" to merge the remote branch into yours)
nothing to commit, working directory clean

从那以后我没有运行任何命令。这22个提交包含“Bob”提交。有没有什么办法可以让那些旧的“获取”数据再次进入主/辅助数据?

任何帮助表示赞赏

2 个答案:

答案 0 :(得分:2)

旧的获取数据仍然存在于refs / remotes分支中(在本地保存!)。

git branch -a在机器上查看所有遥控器及其分支机构,然后只需git checkout -b <newbranchname> <remote>/<branch>即可开始使用。

现在是时候审核/刷新关于DAG,refs,rtb等的所有“不太沉沦”的内容以及DWIMing - 请参阅git help revisionsgit help -g。< / p>

-

rtb's =远程跟踪分支 - 一个跟踪(有副本)远程分支的本地分支,通常保持“只读”。

DWIM - 做我的意思。所以/将获得'ref / remotes / remote / branch'而不是'refs / heads / branch'等。

答案 1 :(得分:1)

如果你们当中没有人仍然在本地进行提交并且他们不在服务器上,我建议使用refloghttps://git-scm.com/docs/git-reflog)尝试查找并恢复它们,如果运气好的话他们没有被垃圾收集了。