【问题标题】:Restore local branch from corrupt header从损坏的标头恢复本地分支
【发布时间】:2019-03-02 15:53:25
【问题描述】:

昨天我第一次提交到一个名为award_end_scenario 的分支。我忘记将它推送到 repo 中,并决定更新我的 Git 客户端(Git Kraken)。我在更新的时候停电了,我的本地克隆搞砸了。

以下文件存在:\.git\refs\heads\award_end_scenario,但已损坏:其中没有任何头引用。

所以,我的问题是:我可以做些什么来恢复我的所有工作?我可以以某种方式恢复我的本地分支吗?

当我打开 git 时,它当前位于该分支中,但是一旦我运行 git loggit branch -a 就可以看到它的损坏状态,这分别表明当前分支已损坏,并且 HEAD 不是有效引用.

谢谢!

【问题讨论】:

  • git reflog 是否提供任何有用的信息?
  • 致命:您当前的分支似乎已损坏
  • 由于损坏的分支是当前“使用”的分支,我能够恢复一些我记得我更改过的文件,因为搞砸的是 git 而不是文件。但是,最好在不依赖我更改过哪些文件的记忆的情况下解决这种情况……
  • 可能需要看一下对象数据库,看看有什么可以拯救的……但我对此并不了解。
  • 在 git 中的分支只是指向可以随意移动的修订的指针,因此分支不是父级或子级。另一方面,修订确实指向他们的父母。希望对你关于父母的问题有所帮助......无论如何......我的意思是:这个回购看起来一团糟(好像你不知道一样)。也许您可以在旁边(本地)设置一个 repo,将损坏的 repo 设置为新 repo 的远程,然后查看从原始 repo 获取的结果。

标签: git branch commit


【解决方案1】:

在尝试git checkout master 之后,更改仍然存在,未提交。然后我跑了:

git reflog expire --expire-unreachable=now --all
git gc --prune=now

并且能够创建一个新分支并将更改提交到新分支。现在一切正常!

【讨论】:

    猜你喜欢
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 2017-04-06
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多