如何清理git存储库中损坏的对象?

2024-02-29

如何获得干净的 git 存储库?这可能会丢失一些历史,但不是全部。此存储库可能已因并发修改和无效合并而损坏同步事物 https://syncthing.net/tool(机器中同步文件的工具)。

在每一个git commit:

...
Could not read e7ac6796b130b61f0f382b0d31845239eeb61e6e
fatal: Failed to traverse parents of commit b5e5b4601495191a5700bcba4e2227515db77376
fatal: failed to run repack
...

On git fsck --full

Checking object directories: 100% (256/256), done.
Checking objects: 100% (26828/26828), done.
broken link from  commit b5e5b4601495191a5700bcba4e2227515db77376
              to  commit e7ac6796b130b61f0f382b0d31845239eeb61e6e
broken link from    tree f2678f1595a2eebd798afb9496614a09eb75d1b6
              to    tree ecd48fc55a31781d2b4cbad0629c10590de0b1a5
broken link from    tree 1259b1ca62274228c9c42aaf4a9a2276a5b60a32
              to    blob 00162d2c6425ae3166187089ff2724cb2bce23db
dangling commit f5079404103ce1343d46884219cbea7d73d0e849
dangling blob b03a78f393908690b5a395b2842c2d99b1d185e7
dangling blob 134bba35a1bda0ed2c4e57640738d8d0e999e483
dangling blob 1180e69eaaa1915c12a4c1d77b20bbc08ad60633
dangling commit f39624880f4f97131d1d56deb7a3ba5289186015
dangling commit 27d46e5a9fc0d28eb7b5229cb9ca06cbf1d6d065
missing blob 00162d2c6425ae3166187089ff2724cb2bce23db
dangling commit 5e2a2d64abce8e24e83f1d5c59f096b6c7180959
dangling commit 273b659b039d66014957dbe1fa3eb975e80b9d03
dangling commit 084d6f70f7b72e1ee4bfd181ec00f8840b9abe7a
dangling commit 5657bf6382d23a2c216af7364612ef73931ad88a
dangling blob cb6bd151bdfe88348d248437b8ddb77eb4669cab
dangling blob aa7ea55c9a797f1ccb1285c1a2fdf81c7fbcacf5
missing commit e7ac6796b130b61f0f382b0d31845239eeb61e6e
missing tree ecd48fc55a31781d2b4cbad0629c10590de0b1a5
dangling commit f1f62b99255d06356be53666bfac72a67b93f264

On git gc:

error: Could not read e7ac6796b130b61f0f382b0d31845239eeb61e6e
fatal: Failed to traverse parents of commit b5e5b4601495191a5700bcba4e2227515db77376
fatal: failed to run repack

尝试克隆此存储库:

> git init 
> git remote add parent <mypath to the broken repo>
... 
> git pull parent master
remote: error: Could not read e7ac6796b130b61f0f382b0d31845239eeb61e6e
remote: fatal: Failed to traverse parents of commit b5e5b4601495191a5700bcba4e2227515db77376
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: protocol error: bad pack header

git 版本 2.25.1


最好:

  • 恢复较旧的.stversions通过“恢复版本”图形用户界面 https://github.com/syncthing/syncthing/pull/4602
  • 验证此旧版本是否有效(git --no-optional-locks statu status https://git-scm.com/docs/git-status#_background_refresh,根据推荐马克·哈弗坎普 https://stackoverflow.com/users/619001/mark-haferkamp in 评论 https://stackoverflow.com/questions/60680946/how-to-clean-damaged-objects-in-git-repository/60681315?noredirect=1#comment110994738_60681315, and git fsck https://git-scm.com/docs/git-fsck)
  • 尝试从当前损坏的存储库中重做文件,以恢复最新的源
  • 添加、提交并推送这些更改。

话虽这么说,使用 git bundle 会更安全,因为我前面提到过 https://stackoverflow.com/a/9336980/6309.

The 阿尔乔姆 https://stackoverflow.com/users/511144/artyom更喜欢在评论中 https://stackoverflow.com/questions/60680946/how-to-clean-damaged-objects-in-git-repository/60681315?noredirect=1#comment107397532_60681315基于存档的选项:

tar --exclude-from=$backupexcludefile \
      --xattrs --create --preserve-permissions --file - ~ | \
    7za a -si -mx=3 $backupfile

这个想法保持不变:仅同步一个文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何清理git存储库中损坏的对象? 的相关文章

  • 当 .gitattributes 中的 EOL 设置为 CRLF 时,Git diff 认为行结尾为 LF

    当我恢复对带有 Windows 行结尾的文件的更改并且 gitattributes 将 EOL 定义为 CRLF 时 git 认为行结尾已更改为 LR 即使十六进制编辑器显示 CRLF 仅当 gitattributes 定义 EOL 字符时
  • Git 将一个分支合并到所有其他分支中

    我知道这个问题已经在这里被问过 https stackoverflow com questions 2329716 merging changes from master into all branches using git https
  • 创建一个空分支?

    我有一个包含项目的 git 存储库 我现在要对这个项目进行大规模的修改 如何为这次大修创建一个空白的新分支 然后当完成时 如何将这个分支切换到master 使用 checkout orphan 命令 git checkout orphan
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • Git difftool 未启动外部 DiffMerge 程序

    我一直遵循 戴夫的博客条目 http www davesquared net 2009 05 setting up git difftool on windows html 链接在此answer https stackoverflow co
  • 使当前提交成为 Git 存储库中唯一(初始)提交?

    我目前有一个本地 Git 存储库 我将其推送到 Github 存储库 本地存储库有约 10 次提交 Github 存储库是其同步副本 我想要做的是从本地 Git 存储库中删除所有版本历史记录 以便存储库的当前内容显示为唯一提交 因此存储库中
  • 仅使用 Git grep 的文件名

    我只想查看文本中包含特定单词的不同文件 current directory git grep word 显示文件中具有匹配单词的每一行 所以我尝试了这个 current directory git grep word files with
  • Git:从 master 以外的分支克隆

    我正在尝试从 Github 的存储库中提取数据 但我不想克隆主分支 我想克隆其他一些分支 当我尝试时git clone
  • 除非我在项目目录中,否则 Git 不会显示日志

    我正在尝试打电话git log当我在不同的目录中时 我经过的位置 git is git log Users Leica proj1 但它说 不是 git repo 如果我cd进入这个目录 就可以正常工作了 cd Users Leica Pr
  • Phonegap使用命令行工具添加插件

    我是phonegap的新手 我按照phonegap官方网站中定义的步骤使用命令行工具创建项目 nodejs 我成功创建项目并添加平台 但是 当我尝试添加插件时出现以下错误 命令 cordova plugin add https git wi
  • 是否可以检测 http git 远程是智能还是愚蠢?

    我正在我的应用程序中实现一个选项来使用 depth 1制作 git repo 的最小功能克隆 我刚刚意识到愚蠢的 http 传输不支持 depth 我想自动检测 http 远程是愚蠢的还是聪明的 这样我就可以省略 depth与哑 http
  • Git - 远程:错误:无法运行钩子/后接收:没有这样的文件或目录

    我收到错误 remote error cannot run hooks post receive No such file or directory 当尝试推送到远程时 接收后文件存在于正确的位置 testnew git hooks 并包含
  • 具有单个子模块的多个存储库

    我已经找了一段时间但没有找到答案 也许我不知道该看什么 我们有一个主库 它本身就是一个存储库 我们称之为 Lib 它包含我们的大部分模块和子模块 我们还假设它的大小为 2GB 现在我们有很多项目 例如 ProjA ProjB ProjC 每
  • Git:如何正确合并两个功能完全不同的分支?

    想象一下这样一种情况 同一个项目有两个分支 第一个分支的一部分对另一个分支进行了大幅重构 但有一段时间 您需要保持两个分支的功能 因此您需要对两个分支进行错误修复和关键功能添加 有时是以不对称的方式 在某些时候 您必须将重构的分支合并到原始
  • 删除并在另一个文件夹中重新创建后保留文件的 Git 历史记录

    我有以下场景 删除了提交 1 中名为 src GetData cs 的文件 在提交 5 中创建了一个名为 src Get GetDataNew cs 的文件 在提交 7 中将 2 中的文件重命名为 src Get GetData cs 1
  • 在推送后检索孤立的提交对象 --force

    Doing push force总是有点冒险 这里有一个例子 说明它如何产生一些问题 例如远程丢失修订版本 假设 有一个人Bob已更新远程master分支来自B to C 还有另外一个人Mike还没有获取此更新并且HEAD of his m
  • 为什么“git pull”在我的网络服务器上失败?

    我使用 git 来提取站点代码库的更改 文件内部的更改和文件删除是有效的 但是 当我将新文件或目录 不是空的 添加到存储库时 它不会被本地拉到网络服务器 拉动时不会显示错误消息 但在检查该文件时 它不在那里 在线的 bitbucket re
  • 以非交互式方式查找合并提交的正确父级

    我正在准备 svn2git 迁移 同时https github com nirvdrum svn2git https github com nirvdrum svn2git虽然非常有用 但我仍然遇到了一些恶作剧 我已经清理掉了大部分 但还剩
  • npm install 的问题(Angular)

    今天我尝试创建一个新项目 所以我使用这个命令 ng new NAME style less 并在我的cmder中弹出错误和警告 所以我卸载了 Roaming npm 和 npm cache 中的节点和文件 然后我安装了node并再次下载cm
  • 如何修改 git add 来处理已删除的文件?

    我从 git 存储库中删除了一些文件 现在 根据状态查看 Changes not staged for commit deleted project war favicon ico deleted project war index htm

随机推荐

  • 如何获得具有多个单位的输出的时间差

    再会 我在 as POSIXct 中有两个日期列 格式为 YYYY MM DD HH MM SS 我想得到两者之间的差异 以天小时 秒的格式显示 这是一些虚拟数据 a lt c 2018 03 20 11 52 25 AST 2018 03
  • 导航到目的地时仅创建一个片段实例(android)

    我正在使用导航组件 导航时 如果片段已经存在于后台堆栈中 我不想创建新的片段实例 并弹出前面已经存在的片段 findNavController navigate RequestTransferFragmentDirections actio
  • 为什么无作用域枚举的声明可以编译?

    In the Effective Modern C Scott Meyers 的书提到 无作用域枚举和有作用域枚举 枚举类 之间的主要区别之一是我们无法转发声明前者 请参阅第 3 章第 10 项 更喜欢有作用域的枚举而不是无作用域的枚举 例
  • 容错 JSON 解析

    我正在使用 Data Aeson 将一些 JSON 解析为记录类型 有时数据会添加到 JSON 中 这会破坏我的代码 因为 Aeson 抱怨如下 预期对象为 21 名称 值对 但有 23 个名称 值 我真的更喜欢以容错方式解析 JSON 我
  • 为什么 Chrome 扩展程序图像在添加到 DOM 时显示为损坏?

    我正在构建一个 Chrome 扩展 并尝试通过内容脚本将带有背景图像的 div 添加到 DOM CSS 加载正确 并且通过开发人员工具检查器查看图像 URL 似乎是正确的 close button css background url ch
  • 原始pcm格式的音频数据是如何存储的?

    我正在编写一个应用程序来操作音频 我需要首先将文件 wav MP3 等 转换为原始数据 样本以浮点形式呈现 我在cmd中使用ffmpeg ffmpeg i test wav f s16le acodec pcm s16le output d
  • Powershell - 如果进程未运行,则启动它

    菜鸟请帮忙 我正在尝试编写一个脚本来检查进程是否正在运行 如果没有 则启动它 如果该进程正在运行 则它不应该执行任何操作 到目前为止 我已经提出了以下内容 但它正在启动该进程的一个新实例 无论它是否已经在运行 任何帮助表示赞赏 Prog C
  • 尝试将生成的PDF发送到谷歌云功能以使用nodemailer发送电子邮件

    目标是让用户在表单中输入一些信息并将其输出到 PDF 中 我正在使用 JSPDF 来解析和创建 PDF 我已经成功获得了制作可打印 PDF 的代码 但为了避免办公室里到处都是纸张 我制作了一个云功能来将该 PDF 通过电子邮件发送给客户 这
  • 线程被销毁时的通知[重复]

    这个问题在这里已经有答案了 有没有办法获得应用程序中线程不再运行 已返回 的通知 我知道这在内核模式下是可能的 使用 PsSetCreateThreadNotifyRoutine 但是有没有办法仅使用 Win32 API 从用户模式知道这一
  • Git + Rails:如何恢复使用“git rm -r”删除的文件?

    我使用 git rm r 删除了 Rails 应用程序中的 db 文件夹 我试过了 git reset HEAD and git reset hard HEAD 但迁移文件不会回来 我尝试提交 然后运行重置 但仍然没有任何结果 我应该怎么办
  • Django - 在 debug.py 列表索引超出范围

    我不明白为什么我会收到这个错误 请帮忙 回溯 最近一次调用最后一次 文件 C Python26 lib site packages django core servers basehttp py 第 280 行 运行中 self resul
  • MYSQLI_CLIENT_SSL 和 MYSQLI_OPT_SSL_VERIFY_SERVER_CERT 有什么区别?

    这是我通常使用 SSL 连接到 MySQL 数据库的方式 db mysqli init mysqli ssl set db NULL NULL etc ssl my certs ssl ca crt pem NULL NULL mysqli
  • akka java 编程覆盖配置

    我能找到的几个关于此问题的主题都是针对 Scala 而不是 Java 而且没有一个涉及远程参与者 我有一个基本配置文件 SERVER CONFIG FILE Include akka common TheSystem akka actor
  • 从第四个视图控制器的第三个视图控制器快速转到根视图控制器

    我有 3 个视图控制器 以模态方式呈现 如何关闭视图控制器并直接从第三个右侧回到第一个 根 视图控制器 基本上 当我打电话时dismissViewControllerAnimated从第三个开始 我希望它也解除底层的第二个视图控制器并直接返
  • PostgreSQL:ORDER BY 和 LIMIT/OFFSET 的奇怪冲突

    我正在尝试在 PostgreSQL 9 1 中执行此操作 SELECT m id vm id vm value FROM m LEFT JOIN vm ON vm m id m id and vm variation id 1 ORDER
  • 使用 AJAX 自动刷新在 Web 应用程序上超时会话的方法

    我正在编写一个 Web 应用程序 它可以按设定的时间间隔通过 AJAX 调用自动刷新数据 因为这样做 服务器端用户会话永远不会超时 因为每次 ajax 调用都会刷新最后一个活动 我是否可以实施良好的客户端规则来使用户超时 IE 我应该跟踪浏
  • Laravel 5.5:如何定义可在所有控制器中使用的全局变量?

    开发人员和编码人员您好 我的问题是如何定义一个全局变量 可以在 Laravel 中的所有控制器 我定义了一个变量 company in AppServiceProviders的启动方法 我在所有刀片视图中使用它 但我无法在控制器文件中使用它
  • Jquery load() 只在 Firefox 中工作?

    我正在尝试进入 jquery ajax 但我什至不敢相信我无法通过第一个测试 我正在遵循我在以下位置找到的示例Jquery API 站点 http api jquery com load 我跟着它就快到了T 我在桌面上创建了一个本地文件夹
  • 如何使用 URL 加载器将字节数组中的 FLV 格式数据发送到 php 脚本?

    我正在创建 Flash 游戏 该游戏具有捕获 记录其游戏玩法的功能 用户可以稍后查看 例如重播 现在我已经能够录制游戏并将其写入 ByteArray 变量中的 flv 格式 我现在正在做的是如何将 ByteArray 视频文件 发送到 ph
  • 如何清理git存储库中损坏的对象?

    如何获得干净的 git 存储库 这可能会丢失一些历史 但不是全部 此存储库可能已因并发修改和无效合并而损坏同步事物 https syncthing net tool 机器中同步文件的工具 在每一个git commit Could not r