gpt4 book ai didi

git - 损坏的 git repo 的问题

转载 作者:IT王子 更新时间:2023-10-29 00:41:37 25 4
gpt4 key购买 nike

我的 git 存储库在运行查找和替换命令时损坏了(参见此处:Git reset failing after find and replace)。所以我删除了一些 git 告诉我无法访问的包文件。所以我运行了 rm ./.git/index, git reset。运行 git commit 时,我收到了这条消息:

fatal: corrupt tree sha $someSHA

最后是 git fsck,我的工作目录变干净了,我可以提交了。现在的 pb 是当我运行 git checkout some_other_branch 时,我收到了这条消息

fatal: unable to read tree $someSHA

(出现的$someSHA是一样的)。有人可以帮助我吗?

编辑 1 :

当我运行 git fsck --full 时,我得到了一系列

error: refs/remotes/repo0/master does not point to a valid object!
error: refs/remotes/repo1/new-version does not point to a valid object!
...

然后是一系列

broken link from    tree d935b909f76ea92728d71038d0a67384353e65e1
to blob 05b97658ebd47fee25b76d80ac76cbd07d77961d
...

然后是一些缺失的 Blob ...

编辑2:

我运行了 git log --raw --all --full-history -- subdir/my-file,我得到了

error: refs/remotes/repo0/master does not point to a valid object!
error: refs/remotes/repo1/new-version does not point to a valid object!
...
error: Could not read 9096eb9d9dcbdf15a04e0a7c78a3744936f82ac7
fatal: cannot simplify commit 8dfd8e3d5b698dc979300d93d8e89a757abf6ec6 (because of 9096eb9d9dcbdf15a04e0a7c78a3744936f82ac7)

编辑3:

我运行了 git fsck --full,我得到了很多行

error: packfile .git/objects/pack/pack-fbfd8042e1e96bf5ffff88f9b5a230b8f5e4d4c4.pack does not match index
fatal: packfile .git/objects/pack/pack-fbfd8042e1e96bf5ffff88f9b5a230b8f5e4d4c4.pack cannot be accessed
...

当运行 git checkout 到另一个分支时,我收到了很多消息:

error: packfile .git/objects/pack/pack-3e7a0c040a5e3d1c21b91256d583424d82a59706.pack does not match index
warning: packfile .git/objects/pack/pack-3e7a0c040a5e3d1c21b91256d583424d82a59706.pack cannot be accessed
....
fatal: unable to read tree 2ad71d368b65eff0b6fec1ef72c6fdde6e80edad

编辑 4 :

按照建议的答案,我解压了文件,当我 checkout 时,我得到了有些行是这样的:

error: packfile .git/objects/pack/pack-fbfd8042e1e96bf5ffff88f9b5a230b8f5e4d4c4.pack does not match index
warning: packfile .git/objects/pack/pack-fbfd8042e1e96bf5ffff88f9b5a230b8f5e4d4c4.pack cannot be accesse....

然后是一系列以

开头的行
 error: Your local changes to the following files would be overwritten by checkout:
.idea_local_work/.name
.idea_local_work/libraries/sass_stdlib.xml
.idea_local_work/scopes/scope_settings.xml
... and then aborting

最佳答案

首先:备份您的 .git 目录,以防您在此过程中损坏更多内容。然后:

  • 放回可用的最佳版本的包文件。
  • 对于每个损坏的包文件,运行:

    mv .git/objects/pack/pack-**yourpack**.pack oldpack
    git unpack-objects -r < oldpack
  • 再次运行 git fsck --fullgit checkout,给我们输出。

  • 看起来现在您应该可以 checkout 了,但是您必须运行 git checkout -f **yourbranch**,因为您的工作目录发生了变化尚未 promise 。不过,当您运行 git checkout -f 时,这些更改将会丢失。

关于git - 损坏的 git repo 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14569172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com