电脑死后,Git存储库坏了

vai*_*olo 86 git

我的电脑坏了,现在我的一个git存储库坏了.当我试图结账大师时,它告诉我:

warning: ignoring broken ref refs/heads/master.
error: Your local changes to the following files would be overwritten by checkout:
        com.vainolo.jdraw2d.releng.p2/pom.xml
Please, commit your changes or stash them before you can switch branches.
Aborting
Run Code Online (Sandbox Code Playgroud)

当我执行时,git stash我得到:

fatal: bad revision 'HEAD'
fatal: bad revision 'HEAD'
fatal: Needed a single revision
You do not have the initial commit yet
Run Code Online (Sandbox Code Playgroud)

那么......我该怎么办?

更新 输出git reflog:

fatal: bad default revision 'HEAD'
Run Code Online (Sandbox Code Playgroud)

不太有希望...输出git fsck:

error: Invalid HEAD
Checking object directories: 100% (256/256), done.
error: unable to unpack 59551f96b4e87a1c14293c19eb548ce6fa1f196f header
error: inflateEnd: stream consistency error (no message)
fatal: loose object 59551f96b4e87a1c14293c19eb548ce6fa1f196f (stored in .git/objects/59/551f96b4e87a1c14293c19eb548ce6fa1f196f) is corrupt
Run Code Online (Sandbox Code Playgroud)

jfr*_*mar 169

我设法通过以下方式恢复:

rm .git/refs/remotes/origin/HEAD
git fetch --all
Run Code Online (Sandbox Code Playgroud)

  • 我不得不做`rm -rf .git/refs/remotes/origin`,但你给我指出了正确的方向 (2认同)

kyn*_*nan 21

首先按照恢复损坏的git存储库中建议的步骤操作:

  • 检查是否.git/refs还包含任何有用的内容
  • 检查git reflog并确认.git/logs/refs/heads/master您所持的任何分支的内容或失败
  • 运行git fsck,可能与--unreachable--lost-found

这有望让你弄清楚masterref应该是什么,这样你就可以恢复它(即将正确的SHA1转换成.git/refs/heads/master).

如果该提交中包含的任何对象确实已损坏,则无法恢复您的HEAD提交.假设您的工作树和/或索引是完整的,您可以尝试git reset --soft(或失败a git reset)前一次提交,然后重新执行提交.避免任何改变工作树sa git checkout -fgit reset --hard.


Car*_*ton 11

我在Windows 8.1的蓝屏死机后遇到了类似的问题

我在这个位置有一个文件......

C:\www\<project>\.git\refs\remotes\origin\<problem-branch>

它是空的,而此文件夹中的其他分支文件内部有长字符串.

NB我没有任何更改/提交

  • 我备份了该<problem-branch>文件
  • 删除了该文件
  • git fetch --all 再次获得分支

然后选项卡自动完成再次开始工作


als*_*ang 6

如果没有很多修改过的文件,我认为解决这个问题的方法是:

  1. 备份您在repo中修改的文件
  2. 删除现有的仓库
  3. 从服务器重新克隆它
  4. 将步骤1中的文件粘贴到repo,然后 git commit -a


j4v*_*4v1 6

经过计算的冻结和崩溃后,我的 git 分支被损坏并显示以下消息: git fatal: your current branch appears to be broken。我无能为力。

做完后git fsck提到该分支机构有一个error: Invalid HEAD. refs/heads/<branch>有一个invalid sha1 pointer

按照此处的选项后,我.git/refs/heads/<branch>在 notepad++ 编辑器中打开,每个 sha1 字符都是NUL.

幸运的是,我只需要将分支重置为远程状态,而且那是在 bitbucket 存储库上。我从远程存储库的尖端抓取了 sha1 并复制到.git/refs/heads/<branch>保存的它,然后执行了git reset --hard HEAD,一切都恢复正常。


小智 5

我设法通过删除 git\refs\heads 目录中的主文件来解决这个问题