- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 git 存储库,其中似乎缺少一个 blob。 git gc
或 git repack
失败并提示“fatal: unable to read 89a9259486af9e3f0b24f3338ec39b18a7ba39c3”。但是,git fsck
没有发现问题。我知道我可能不得不删除和修剪某个地方的分支,但我不知道在哪里。有人可以告诉我如何调试和修复“无法读取”问题吗?
git 版本是 2.16.4,但有可能在 2.8.3 版本发生损坏。
blob 不存在于“官方”repo 中,因此它可能只属于本地分支/reflog/等。有很多地方分支机构和
这个 repo 上有很多工作树,它可能在其生命周期内添加、删除和修剪了工作树。
调试信息:
git repack -adfb --max-pack-size=256m --window=40 --window-memory=100m
计数对象:5999778,完成。
使用最多 4 个线程的增量压缩。
压缩对象:100% (5983452/5983452),完成。
警告:禁用位图写入,由于 pack.packSizeLimit,包被拆分
致命:无法读取 89a9259486af9e3f0b24f3338ec39b18a7ba39c3
我尝试了几个不同的 fsck 命令行,结果都相同:
$ > git fsck --cache --no-dangling --name-objects --progress
Checking object directories: 100% (256/256), done.
Checking objects: 100% (14155357/14155357), done.
Checking connectivity: 6003771, done.
.
git show 89a9259486af9e3f0b24f3338ec39b18a7ba39c3
fatal: bad object 89a9259486af9e3f0b24f3338ec39b18a7ba39c3
.
$ > git branch --contains 89a9259486af9e3f0b24f3338ec39b18a7ba39c3 --all
error: no such commit 89a9259486af9e3f0b24f3338ec39b18a7ba39c3
这是我之前出于其他目的从互联网上获取的脚本,但我认为它可能有帮助:
$ > /tmp/git_blob_to_commit.pl 89a9259486af9e3f0b24f3338ec39b18a7ba39c3
[no ouptput]
请注意,这是一个巨大的 repo 协议(protocol),因此 gc/repack 操作需要很长时间,所以如果你给我一些建议,我不会忽略它,我可能正在尝试,但需要几个小时才能得到告诉你它是怎么回事。
更新重新运行命令按 [return] 几次,您可以看到错误不在压缩阶段。它可能处于写作阶段。 (?)
Counting objects: 6006957, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5990610/5990610), done.
Writing objects: 19% (1193602/6006957)
warning: disabling bitmap writing, packs are split due to pack.packSizeLimit
Writing objects: 26% (1579434/6006957)
Writing objects: 63% (3802470/6006957)
fatal: unable to read 89a9259486af9e3f0b24f3338ec39b18a7ba39c3
最佳答案
这是一个棘手的场景,旧版本的 git 会错误地修剪工作树上索引实际使用的对象。
这是我采用的粗略方法。它肯定可以优化,但我希望永远不必再这样做。
for i in $(git worktree list | awk '{print $1}')
do
cd $i
echo "TITLE $i"
git ls-files --stage
done >> /tmp/blobs.txt # This is potentially a massive file
for i in $(cat /tmp/blobs.txt | awk '{print $2}') # Brute force, could be optimized
do
git show $i >/dev/null || echo "NOT FOUND $i"
done
对于每个“未找到”条目,运行 egrep "TITLE|<sha>" /tmp/blobs.txt
找到它所在的工作树。然后转到工作树并取消索引中的任何内容。这应该可以解决问题。
感谢@torek 提供信息以得出此结论。 (你有足够的 SO 声誉,我认为你不会介意没有得到这个答案的分数。)
关于Git 损坏 "unable to read [sha]"但 git fsck 报告没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51789520/
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
我目前正在尝试制作一个非常简单的应用程序,它会根据一天中的时间问候。我的代码是: open System let read() = Console.Read() let readLine() = Co
我已经运行Elasticsearch服务很长时间了,但是突然遇到了以下情况 由以下原因导致:org.elasticsearch.index.translog.TranslogCorruptedExce
我对执行以下操作的 php 重定向脚本有一个奇怪的问题: 在用户的浏览器中植入 Cookie,或者读取现有 Cookie(如果有)。 将用户重定向到另一个网址(重定向的网址是原始网址中的参数,例如 h
我正在使用 iText 7.0.0(Java 风格),似乎表格单元格 HorizontalAlignment 被忽略,因为 CENTER 和 RIGHT 都不起作用。你能重现这个吗? see th
简而言之: 我有一个可以从多个线程访问的计数器变量。尽管我已经实现了多线程读/写保护,但该变量似乎仍然以不一致的方式同时写入,导致计数器结果不正确。 深入杂草: 我使用的“for 循环”会在后台触发大
我有一个 REST 项目,在访问控制服务类中保存用户的ArrayList。一切都工作正常,直到 REST Web 服务突然抛出 java.util.NoSuchElementException。单步查
已关闭。此问题不符合Stack Overflow guidelines 。它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
当我刷新页面时,我无法显示 voteUp/Down,因为如果我执行 voteUp/Down(+1 或 -1) 并刷新页面,这会再次返回 voteUp/Down (0)。过去我使用 JSON,但社区推荐
我正在为离散时间 CPU 调度模拟器编写代码。它只是生成流程并相应地安排它们。我目前正在实现 FCFS 计划。我理解离散时间模拟器的本质,但我在用 C++ 实现时遇到了麻烦。 问题出现在handleN
尝试使用 yum 部署包时出现错误: 2016-07-07 14:14:31,296 - ERROR - error: rpmdb: BDB0113 Thread/process 6723/1
我有一个简单的同步队列 template class SynchronisedQueue { public: void Enqueue(const T& d
我正在使用 hadoop 0.20.append 和 hbase 0.90.0。我将少量数据上传到 Hbase,然后出于评估目的杀死了 HMaster 和 Namenode。在此之后,我向 Hbase
我使用 symfony 框架 1.4 创建了一个网站。我正在使用 sfguard 进行身份验证。 现在,这在 WAMP (windows) 上运行良好。我可以在不同的浏览器上登录多个帐户并使用该网站。
目前我已经实现了 HashMap private static Map cached = new HashMap(); 和 Item 是一个具有属性的对象 Date expireTime 和 byte
我试图将 2 个不同的 WPF 控件绑定(bind)到 ViewModel 中的同一属性,即 CheckBox.IsChecked 和 Expander.IsExpanded。我想要实现的行为是让 C
我希望这是一个简单的问题,但我没有找到答案。 我想让 build.gradle 文件通过替换某些变量来设置我的 Spring Boot 应用程序中的版本。这与广告一样有效: def tokens =
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
这个问题在这里已经有了答案: In a fragment shader, why can't I use a flat input integer to index a uniform array o
我已经下载了 OSM 世界地图。解析时出现异常: osm bound changeset (...) changeset Exception in thread "main" org.xml.sax.
我是一名优秀的程序员,十分优秀!