git-致命:您当前的分支似乎已损坏(可能是由于不正确的git --amend造成的)

问题描述 投票:0回答:1

问题:

  1. 不小心做了git --amend并将其从第一台计算机推送到USB密钥
  2. 从USB密钥拉到第二台计算机
  3. 第二个计算机存储库现在已损坏
  4. git pull到第一台计算机会导致合并冲突;对是否也将是损坏状态感到困惑(如果--amend损坏)

症状:

大多数命令:

fatal: your current branch appears to be broken

。git / refs / heads / master:

$ cat .git/refs/heads/master

。git / refs / heads / master的文件内容:

'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

$ git status
new file: ...
new file: ... [for every file in the repository; expected since on a corrupted branch]

我不确定我是否会责怪git --amend,因为它看起来有些良性;也许发生了其他事情。

如何解决?:

修复此问题是否像从.git / logs / refs / heads / master的最新提交中获取哈希值并将其手动插入.git / refs / heads / master一样简单?如果

,我该怎么办?

如果是这样,我应该销毁有问题的提交(以便以后不会破坏内容,例如git-repack之类的东西吗?]

[当我尝试less .git/logs/refs/heads/master并从表格的最后一行中提取[edit:typo] first哈希...

...
[hash for HEAD~2] [hash for HEAD~1] [authorname] ...
[hash for HEAD~1] [hash for HEAD] [authorname] ...
^^^^^^^^^^^^^^^^^   (corrupted)
EOF

...然后粘贴到.git / refs / heads / master文件中,我现在坚持使用...

$ git fsck
error: inflate: data stream error (unknown compression method)
error: unable to unpack header of .git/objects/8f/1da374ffac3711f8cdde57379f90cb03bbb9ea
error: 8f1da374ffac3711f8cdde57379f90cb03bbb9ea: object corrupt or missing: .git/objects/8f/1da374ffac3711f8cdde57379f90cb03bbb9ea
error: inflate: data stream error (unknown compression method)
error: unable to unpack header of .git/objects/ac/2fcd052804fb7adac465220da5bcb04d008fc7
error: ac2fcd052804fb7adac465220da5bcb04d008fc7: object corrupt or missing: .git/objects/ac/2fcd052804fb7adac465220da5bcb04d008fc7
Checking object directories: 100% (256/256), done.
Checking objects: 100% (1147/1147), done.
error: inflate: data stream error (unknown compression method)
error: unable to unpack 8f1da374ffac3711f8cdde57379f90cb03bbb9ea header
error: inflate: data stream error (unknown compression method)
error: unable to unpack 8f1da374ffac3711f8cdde57379f90cb03bbb9ea header
fatal: loose object 8f1da374ffac3711f8cdde57379f90cb03bbb9ea (stored in .git/objects/8f/1da374ffac3711f8cdde57379f90cb03bbb9ea) is corrupt

我可以尝试销毁松散的对象,但是我不确定它是否又是指向也必须销毁的更多损坏对象的指针(例如,树)。如果我知道该命令,我当然可以尝试销毁该对象(或者可以尝试将其备份rm);我应该尝试吗?

此外,我如何从这个混乱中修复USB密钥和其他存储库?谢谢。

(对新手来说可能有用的参考,不太可能帮助有能力回答这个问题的人:https://aboullaite.me/deep-dive-into-git-git-refs/)(类似的问题fatal: your current branch appears to be broken-未指定错误原因;很多情况都可能导致此错误)


编辑:

我为上面列出的每个对象都做了rm .git/objects/...,现在我有了...

$ git fsck
Checking object directories: 100% (256/256), done.
Checking objects: 100% (1147/1147), done.
error: refs/remotes/origin/HEAD: invalid sha1 pointer 0000000000000000000000000000000000000000
error: refs/remotes/origin/master: invalid sha1 pointer 0000000000000000000000000000000000000000
error: HEAD: invalid reflog entry 8f1da374ffac3711f8cdde57379f90cb03bbb9ea
error: refs/heads/master: invalid reflog entry 8f1da374ffac3711f8cdde57379f90cb03bbb9ea
error: bad ref for .git/logs/refs/remotes/origin/HEAD
error: bad ref for .git/logs/refs/remotes/origin/master
error: ac2fcd052804fb7adac465220da5bcb04d008fc7: invalid sha1 pointer in cache-tree
broken link from    tree b0d598ef5427d59ed31eb1b315c761fc89af40b7
              to    tree ac2fcd052804fb7adac465220da5bcb04d008fc7
dangling blob f4e39c36cc8df3f9f324c0ccca4ed6a7a3ffe6ac
dangling tree 068716abcf815b4eaf8f0fe74c3020bf6251bba0
dangling blob fb4cfe7c94e8b4d800fdb4935806577b2b99fd94
dangling blob 35cf2ca2ed03811c14f1598c50daacfab9032b8f
missing tree ac2fcd052804fb7adac465220da5bcb04d008fc7
dangling blob d056e38af637cf0de76dac5689a8c5e735d75793
dangling blob 3b3903cc7b4eb035e9c4508024acc3f81c015741
dangling blob b09c3cc95935a327ecf7fad8374f14c4e320f67e
git corruption amend reflog
1个回答
0
投票
计算机1:

    在第一个存储库上运行git fsck与它没有损坏发生冲突
© www.soinside.com 2019 - 2024. All rights reserved.