作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的 git 存储库有问题。 Git gui 总是 pop 松散对象警告,当我让它压缩时,下次启动 git gui 时会出现 pop 窗口。我已经尝试在控制台中执行 git gui
,这里是输出:
$ git gc
error: Could not read 89acec6cd486753b5bbbcf6239f4cf39ab20c6a8
error: Could not read 4f0ce06bd472abcef5eef1ac9a780f2b2fb7d56f
error: Could not read 44e02cd1a9e12b9e6a2ad0b1f6dc062d1d25faac
error: Could not read e503215228feca3e4243e94b07c0714edc5b48ff
error: Could not read 4620c2776e1de834a5d5a56d711ff9b2e27699b7
Counting objects: 189655, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (38260/38260), done.
Writing objects: 100% (189655/189655), done.
Total 189655 (delta 142194), reused 189655 (delta 142194)
error: Could not read 89acec6cd486753b5bbbcf6239f4cf39ab20c6a8
error: Could not read 4f0ce06bd472abcef5eef1ac9a780f2b2fb7d56f
error: Could not read 44e02cd1a9e12b9e6a2ad0b1f6dc062d1d25faac
error: Could not read e503215228feca3e4243e94b07c0714edc5b48ff
error: Could not read 4620c2776e1de834a5d5a56d711ff9b2e27699b7
Checking connectivity: 199676, done.
如何解决?
git show 89acec6cd486753b5bbbcf6239f4cf39ab20c6a8
结果 fatal: bad object 89acec6cd486753b5bbbcf6239f4cf39ab20c6a8
和 git fsck --full
有很多悬空提交。
我正在使用 git v2.4.1
谢谢大家的回答!
编辑:我重新克隆了我的存储库并将 .git 文件夹复制到我的树中,现在一切正常。
最佳答案
在尝试以下任何操作之前,请对项目中的所有内容进行完整备份。
因为只有五个损坏的 git 对象,我想它们都是在一个 git add
中添加的。如果是这种情况,您可以尝试搜索指向具有这些对象的树的提交。如果它们在单个提交中,则可以手动删除该提交并将分支头重置为最后一个可行的提交(如果损坏属于任何分支)。
如果损坏的提交属于任何分支,将其删除将导致最新的 git 历史丢失。但是您现在可以使用备份代码至少恢复工作树中的内容。
更新:啊,对不起。没有了解悬空提交。所以历史被严重破坏了。实际上,只有 5 个对象被破坏。这些可能是一些长期未更改的文件或文件夹,因为它们存在于许多提交中。如果那些 git 对象的文件和文件夹仍然存在(并提供相同的 SHA)怎么办?
git 初始化; git 添加——全部; git commit -m'消息'
关于Git gc 显示错误 "Could not read commit",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30356012/
我是一名优秀的程序员,十分优秀!