如何修复gitk报错can't read "arcnos()": no such element in array
问题根源
这个报错是gitk 1:2.25.1版本的已知兼容性问题,触发原因是仓库中存在格式不规范的标签:你执行git fsck输出的missingSpaceBeforeDate错误对应的5个标签,其元数据中作者/提交者行的日期前缺少必填空格,旧版本gitk解析这类标签时没有做容错处理,直接读取未初始化的数组元素导致崩溃,无法正常加载diff等内容。
悬挂对象、git rebase/git reset --hard操作、git replace规则和这个报错没有关联。
解决方案
你可以任选以下一种方式修复:
- 方案1:修复不规范的标签
找到那5个格式错误的标签,删除后重新打符合规范的标签即可,操作步骤:- 查看错误标签的具体信息:
git show <标签哈希>,确认对应的标签名 - 删除旧标签:
git tag -d <标签名>,如果是同步到远程的标签还要执行git push origin :refs/tags/<标签名> - 重新打对应版本的标签,确保标签元数据格式正常:
git tag <标签名> <对应的提交哈希>
- 查看错误标签的具体信息:
- 方案2:升级gitk版本
Ubuntu 20.04官方源的git版本较低,你可以添加git官方PPA源升级到更高版本的git(新版gitk已经修复了这个解析容错问题):sudo add-apt-repository ppa:git-core/ppa sudo apt update sudo apt install git - 方案3:临时跳过标签解析(快速验证用)
如果你暂时不需要修改标签,启动gitk时加上--no-tags参数即可跳过标签解析,正常使用gitk的其他功能:gitk --no-tags
内容的提问来源于stack exchange,提问作者imz -- Ivan Zakharyaschev
相关产品推荐
相关产品推荐

