Git 损坏主分支

Git 损坏主分支

我在 Windows 7 上使用 gitExtensions 打开了 Visual Studio 项目的 Git 存储库。它突然变空了。存储库存在,但我的所有提交都消失了。

我正在使用图形界面,我相信这是他们更新以来我第一次打开它。

我不确定如何才能恢复我的承诺。

当我输入

git log 

我收到

致命:错误的默认修订版本‘HEAD’

更新
看过之后https://stackoverflow.com/questions/1545407/recovering-broken-git-repository我试过

git fsck

它返回:

错误:无效的 HEAD
致命:松散对象 36b7d9e1ca496bcb864c0b9c8671fcec97fbda31(存储在 .git/obj ects/36/b7d9e1ca496bcb864c0b9c8671fcec97fbda31 中)已损坏

承诺回报:

错误:无法解析引用 HEAD:没有此文件或目录
致命:无法锁定 HEAD 引用

并记录主分支返回

$ git log master 警告:忽略损坏的引用 refs/heads/master。警告:忽略损坏的引用 refs/heads/master。致命:参数“master”不明确:未知修订或路径不在工作树中。使用“--”将路径与修订分开

我只是继续粘贴可能相关的内容

$ git reflog master
警告:忽略损坏的引用 refs/heads/master。
警告:忽略损坏的引用 refs/heads/master。
致命:参数“master”不明确:未知修订或路径不在工作树中。
使用“--”将路径与修订分开

更多可能有用的信息:每次我删除损坏的文件时,另一个文件都会取而代之。我开始认为这与 master 分支指向错误的东西有关。因为我假设 head 指向 master。

一天后:
所以我让我的朋友知道了这件事,他能够查看日志,他说日志中的哈希值与文件夹中的对象不匹配。他尝试将主分支重置为日志或类似的东西,我有点迷茫。希望这对你有帮助

答案1

存储库存在,但我的所有提交都消失了。

你到底是什么意思?工作树还在吗?.git/存在吗?里面有什么文件吗?

您发布的消息表明该文件.git/HEAD不存在。它定义了工作树的预期状态(您已签出的内容)。如果该文件不见了,git 就不知道您在哪里。

您可以尝试自己创建文件,内容如下: ref: refs/heads/master

如果您位于不同的分支,只需将“master”替换为分支名称即可。如果您不在分支上,则情况会更加复杂。

.git/logs/HEAD记录 HEAD 的过去状态,后面的行位于底部。此示例行显示了结帐: 25f2a6099fb5f9f2192a510c42f704f9fc4bcecb 65abb1a3dc102e2498860f01fb179cda4c51decb Rainer Blome <[email protected]> 1346938344 +0200 checkout: moving from master to MySuperBranch

前面的 SHA1 指的是提交。您应该能够在分支日志中找到它们,例如.git/logs/refs/heads/master

您提供的 git reflog 输出似乎refs/heads/master也缺失了。其唯一内容应该是最新提交的 SHA1(以及换行符)。您可以在分支日志的末尾找到最新的 SHA1,例如.git/logs/refs/heads/master

答案2

如果 .git/HEAD 存在并且其内容是,ref: refs/heads/master则检查文件 refs/heads/master 它必须包含最后一次提交的 sha1。

如果该文件已损坏并且充满 NULL 字符,请编辑该文件并放入最新提交.git/logs/HEAD或最后一次提交之前的提交的 sha1。

然后做git reset --hard 'sha1 of the commit that you selected'

答案3

听起来你的 repo 已经损坏了。最简单的方法是从备份中恢复你的 repo 或从原始源重新克隆 repo(假设你在 repo 中没有大量的工作)。

如果无法恢复/克隆,我建议你阅读专业 Git(免费在线书籍或纸质版)。整本书内容丰富,但请特别阅读最后一章,以了解 Git 的内部工作原理。一旦您了解了 Git 的工作原理,请查看 Linus 的恢复损坏对象的说明

答案4

在网上浏览了一段时间后,我终于找到了这个并且它有效。

git fetch origin
git reset --hard origin/master

相关内容