某一天拉代码发生了一次错误
Checking object directories: 100% (256/256), done.
error: ./objects/pack/pack-e434848729a1a52d7ec5cd39ade4fac7f7aa5595.pack SHA1 checksum mismatch
error: index CRC mismatch for object 582bda543520dcbde0f6baaae86d5f9b626787f0 from ./objects/pack/pack-e434848729a1a52d7ec5cd39ade4fac7f7aa5595.pack at offset 57938241
error: inflate: data stream error (invalid distances set)
常规思路谷歌一下是否有类似解决方法,搜到一篇很有用的文章:
http://web.mit.edu/jhawk/mnt/spo/git/git-doc/howto/recover-corrupted-object-harder.html
有一个对应的译文,不过译文有点绕口,不知道是否机器翻译人工简单修订了下
http://blog.jobbole.com/50108/
大致思路是采用穷举改变错误地方的每一个字节,让其能够被解压缩,可惜这个玩意试验后不适用我的情况,因为那个作者只是错了一个字节,而我最后修复后发现错了9个字节并且散落在不同位置。
中间绕过很多弯路,把git源码拉下来修改解包源码然后编译让其调过错误的那个块,但最后我的情况修复可以绕过很多弯路处理,那就是是我错误的 sha1 object 可以完整的打印出来。
即
git cat-file -p 582bda543520dcbde0f6baaae86d5f9b626787f0
可以得到这个对象,然后一切就简单了,把这个文件cat出来,放到一个新的git仓库,然后add进去并gc, 从 pack 文件把打包的 offset 用 dd 命令down下来, 原样不动的覆盖掉错误的地方就解决了。
目前不得其解的是为什么错了的还能正确 cat 出来,如果cat 都出不来,那就只能用采用解包方式来处理这个了。
git这么强大,应该有相关low level命令可以处理而不用涉及改源码,目前还没研究真正的原因,等什么时候空了再去查一下根本原因是什么,暂时记录下来供参考。
分享到:
相关推荐
CentOS下搭建Git_Gerrit_Jenkins版本控制系统
windows 搭建git,gerrit代码审核平台
GIT+Gerrit+Jenkins基础操作
Git/Gerrit Manual,常用命令,基本配置
git版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。在本书所展示的例子中,我们仅对保存着软件源代码的文本文件作版本控制管理,但实际上,你可以对任何类型的文件进行版本控制
git官方中文文档 https://git-scm.com/book/zh/v2/ 亦可自行下载,亦可支持我一下
资源分类:Python库 所属语言:Python 资源全名:git_gerrit-1.8.2.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
git+gerrit配置文件和常用命令,完整的gerrit配置和提交代码管理工具描述
适用于git文件泄露,可下载web目录下未删除对.git文件,web安全攻防工具!基于python3
资源分类:Python库 所属语言:Python 资源全名:git_gerrit-1.1.0.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
自己从零开始搭建git + gitweb + gerrit服务器 软硬件环境 物理机:Windows10 64位 VMware版本:VMware Workstation 12 Ubuntu版本:ubuntu-14.04-server-amd64.iso
eclipse GIT_4.6.1离线插件包 下载后解压到eclipse安装目录,重启Eclipse即可。
常用git命令,管理代码仓库的一些常用命令。
Git_tutorial Git manager source and vesion
1、进入上面创建好的干净的工程目录,把上面建立好的default.xml文件复制到这里。 2、把客户端的id_rsa.pub加入到服务端的 authorized_keys里。... getnames_and_init_push_git_proj.py
文档主要介绍git gerrit repo的基本功能,及搭建流程和代码评审流程
================================= git_2.14_windows_64_exe文件 =================================
git+repo+gerrit代码评审服务器搭建流程详细步骤,一步步教你搭建完整的代码评审服务器,本人亲自搭建流程记录,验证通过
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。[1] Git的读音为/gɪt/。 Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。[2] Git 是 ...
Git_2.18-win64banben Git_2.18-win64banben Git_2.18-win64banben