以下是发生的事情: 当我在推送时注意到我的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”提交。有没有什么办法可以让那些旧的“获取”数据再次进入主/辅助数据?
任何帮助表示赞赏
答案 0 :(得分:2)
旧的获取数据仍然存在于refs / remotes分支中(在本地保存!)。
请git branch -a
在机器上查看所有遥控器及其分支机构,然后只需git checkout -b <newbranchname> <remote>/<branch>
即可开始使用。
现在是时候审核/刷新关于DAG,refs,rtb等的所有“不太沉沦”的内容以及DWIMing - 请参阅git help revisions
和git help -g
。< / p>
-
rtb's =远程跟踪分支 - 一个跟踪(有副本)远程分支的本地分支,通常保持“只读”。
DWIM - 做我的意思。所以/将获得'ref / remotes / remote / branch'而不是'refs / heads / branch'等。
答案 1 :(得分:1)
如果你们当中没有人仍然在本地进行提交并且他们不在服务器上,我建议使用reflog
(https://git-scm.com/docs/git-reflog)尝试查找并恢复它们,如果运气好的话他们没有被垃圾收集了。