git status显示致命:坏对象HEAD

dot*_*cks 50 git github

我在Windows Azure上遇到git问题.Git状态显示 - "致命:坏对象HEAD",我尝试运行:

 git fsck --full
 git gc
Run Code Online (Sandbox Code Playgroud)

git fsck显示:

broken link from  commit 739df633f185ce5d1ab7eb97d619b28e7d81185a
              to    tree 2a6d4876d135c1fa7cbe1348c62570006e895fc5
broken link from  commit 9c7eae5ffed34dbfac977e515dee675626b59f93
              to    tree 400132d215ab9aced883a9971e648b82624b2032
broken link from  commit 9c7eae5ffed34dbfac977e515dee675626b59f93
              to  commit 4a49af0a0cb64a0a0415734b11772d6df18561fb
broken link from  commit bc3072f30e71c616a8196089e19a67a2c9c0a5ad
              to    tree 0aa813c183487d0a1b1f7ae81501ca7a1168283f
broken link from  commit d3bb4f8545e91ec8ace15ad31a3147d92a1d4242
              to    tree 4682108accd8e72fe68858232386dffe60f9f02d
broken link from  commit 6b34795c4b54286301bcdc0ed254a04c132cb2ad
              to    tree 5c57dd3222d11924dba841d3cae517bdc9220601
broken link from  commit d70172d855391b93bc1c5eeb9b4226df525dfc6e
              to  commit 390c8cbd527c8e707c51e25142e54421f4dd3948
broken link from  commit cc05e8d2e3733693ebb67d697ae4b65e51fea79a
              to  commit 32f081f8b901425fd1e8898478f0551970bee0f5
broken link from    tree 6a75ed6d0311d800078e77f43d427d128372d5bc
              to    blob 4a064d610c0e7207967d59934c8bc5f491f26dae
broken link from    tree 6a75ed6d0311d800078e77f43d427d128372d5bc
              to    tree 5c06ec964dcbade49287d0f36efe1f7b60f446e3
broken link from    tree b4855fa6734b5652a93a9b799eafe47fad0d13a0
              to    blob 3e1fb421613dc9066cbf9c95eddc61619a9f8eed
broken link from    tree b4855fa6734b5652a93a9b799eafe47fad0d13a0
              to    tree 556a50048d42346c283c94b78ea278ba1d57d251
broken link from    tree 289c03409370c4ca7c12266ce2822a2976bd032b
              to    blob 3abf3c48ada45f63404dcf4d675ddfdadcfa83c6
broken link from    tree 289c03409370c4ca7c12266ce2822a2976bd032b
              to    blob 3fa569892003b468ed1301426dd6d96d9644be3c
broken link from    tree 289c03409370c4ca7c12266ce2822a2976bd032b
              to    blob 0a9a54a51e84f3bc34122dbce1146d895fcbe22c
broken link from    tree 289c03409370c4ca7c12266ce2822a2976bd032b
              to    blob 3fa48873564361b4d95830803ae77f79eeafaf5b
Run Code Online (Sandbox Code Playgroud)

git branch 显示 - *主人

gan*_*esh 45

试试这个:为我工作 rm -rf .git

然后从其他克隆复制.git

cp <pathofotherrepository>/.git . -r

然后做

git init

这应该解决你的问题,一切都好

  • 您是否意识到使用“rm -rf .git”您将丢失所有尚未推送到远程的存储和分支。 (6认同)
  • 有用!谢谢!但是有一个警告……您将丢失工作目录中没有的所有内容(本地分支、存储等)。也许你想用 `mv` 代替 `rm -rf` 来尝试恢复后面的东西 ;-) (5认同)

Ikk*_*kke 33

您的存储库已损坏.这意味着数据丢失无法通过git本身恢复.如果您有此存储库的另一个克隆,则可以从那里恢复对象,或者进行新的克隆.

fatal: bad object HEAD 表示从HEAD引用的分支指向一个错误的提交对象,这可能意味着它丢失或损坏.

从输出中git fsck,您可以看到缺少一些树,blob和提交对象.

请注意,使用git本身不足以保证数据安全.在腐败的情况下,您仍然需要备份它.

  • 这对我有用,我将存储库克隆到另一个目录,然后删除损坏的 .git 文件夹并将其替换为克隆中的 .git 。然后运行 ​​git init、git fetch 和 git status 将自动检测最后未提交的更改 (4认同)

Bil*_*ill 29

跑步

git remote set-head origin --auto
Run Code Online (Sandbox Code Playgroud)

其次是

git gc
Run Code Online (Sandbox Code Playgroud)

  • 这!我的起源将其主分支从“master”重命名为“main”。这个答案解决了这个问题。 (10认同)
  • 添加“git fetch”,然后“git merge origin/HEAD”,然后“git push”对我有用。 (2认同)

Fel*_*ira 19

在我的情况下,错误无处不在,但没有让我推送到远程分支。

git fetch origin
Run Code Online (Sandbox Code Playgroud)

这解决了它。

我同意这可能无法解决每个人的问题,但在尝试更复杂的方法之前,先试一试这个方法,没什么可松懈的。

  • 在计算机之间进行部分文件同步后,我经常收到此错误。这每次都为我解决。 (3认同)

Mah*_*eja 17

发生这种情况是因为我错误地删除了GIT的一些核心文件.试试这个对我有用.

重新初始化git

git init
Run Code Online (Sandbox Code Playgroud)

从远程获取数据

git fetch
Run Code Online (Sandbox Code Playgroud)

现在检查所有更改和git状态

git status
Run Code Online (Sandbox Code Playgroud)


小智 9

我有类似的问题,对我来说有用的是从我的原始存储库中创建一个新的克隆

  • 我在使用 VS2017(15.3.3) 和 git 时发生 Windows 10 崩溃后来到这里。我没有任何待处理的更改,因此使用上面 @serup 的答案,特别是我: - 删除了根解决方案文件夹“C:\Code\MySolution”(其中包含 .git 作为子文件夹)。- 然后来自 VSTS | 项目=我的解决方案| 代码| master 分支页面,我单击“克隆”按钮并选择“在 Visual Studio 中克隆” - 我输入了相同的位置“C:\Code\MySolution”。一切都很简单(最后)。 (2认同)

jan*_*glx 7

您的存储库已损坏。但是您可能可以修复它并保留您的编辑:

  1. 首先备份: cp your_repository your_repositry_bak
  2. 克隆损坏的存储库(仍然有效): git clone your_repository your_repository_clone
  3. 用克隆中的文件夹替换损坏的.git文件夹: rm -rf your_repository/.git && cp your_repository_clone/.git your_repository/ -r
  4. 删除克隆和备份(如果一切正常): rm -r your_repository_*

  • 此答案仅汇总了[@ serup's](/sf/answers/1792501441/)和[@ganesh答案](/sf/answers/3201131811/)的商品。 (3认同)