如何清理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存储库中损坏的对象? 的相关文章

  • 如何终止当前正在运行的git进程? [复制]

    这个问题在这里已经有答案了 git commit m 45 fatal Unable to create F SoftifyBD Projects proj 4 CMS Latest contentmanagementsystem git
  • 如何为新的 eclipse (neon) java 项目初始化 git

    我安装了 eclipse Neon 的新副本 并在一个新的闪亮工作区中创建了一个新的 gradle java 项目 将 git 添加到聚会中的最佳实践是什么 我读到在项目目录中初始化 git 是真是个坏主意 https stackoverf
  • Git 子模块在 Windows 上更新缓慢

    Git 子模块在 Windows 上似乎非常慢 为了测试性能 我创建了 3 个裸存储库并向它们提交了 3 条独立消息 未存储文件 然后 我将每个裸存储库作为子模块添加到新的 git 存储库中 并执行子模块更新 花费了 5 秒多的时间 当使用
  • 如何在 Android Studio 中比较两个 Git 分支?

    我不确定是否可以将主分支 或任何其他分支 与当前功能分支进行比较 例如GIT does 我想要两个分支 主分支和功能分支 之间的差异 以便我可以在合并之前比较差异 我发现 Git UI 对用户不太友好 就像在 AS 中一样 我可以遍历代码并
  • git分支和标签如何存储在磁盘中?

    我最近检查了我工作中的一个 git 存储库 其中有 10 000 多个分支和 30000 多个标签 新克隆后 存储库的总大小为 12Gigs 我确信没有理由拥有 10000 个分支机构 所以我相信它们会占用磁盘中相当大的空间 所以 我的问题
  • git:如何查明某个分支是否有拉取请求?

    我在 git 分支上 有没有办法查看该分支是否有拉取请求 在这种特殊情况下 Atlassian Stash 用于管理拉取请求 当然我可以使用Stash的Web界面来搜索拉取请求 但我也可以仅使用 git 命令行工具从脚本执行此操作吗 Cor
  • 命令来确定当前 HEAD 的上游引用?

    我正在寻找我所希望的简单的一行命令确定当前签出分支的正确上游引用 本质上就像是 git branch remote HEAD 如果有效 会将符号模式 HEAD 转换为当前分支名称 然后选项 remote然后将其更改为远程跟踪分支的引用 但它
  • 如果文件已在服务器上,请避免使用 git-ftp 上传

    假设我有应用程序的本地副本 我将其推送到 github 然后使用 git ftp 将任何更改上传到我的服务器 我首先会使用 git ftp init u
  • 如何预览 Git 中的隐藏内容?

    我想检查一个存储 并找出如果我将其应用于当前状态的工作树 它会发生什么变化 我知道我可以对存储进行 git diff 但这向我展示了工作树和存储之间的所有差异 而我只是想知道存储应用将改变什么 git stash show将向您显示最近存储
  • 为什么cherry-pick总是会导致合并冲突?

    我正在从发布分支中挑选特定的提交到我的本地工作副本中 每次我从发布分支中挑选一个提交时 我都会遇到必须解决的合并冲突 即使更改看起来微不足道 例如 const char kApplicationVersion Develop const c
  • 节点项目的 Azure git 部署失败

    我正在尝试将我的项目部署到azure 它正在失败 这些是我采取的步骤 git init git config core longpaths true git add git commit m initial commit 所有这些都有效 我
  • 如何使用 .gitattributes 避免在 git root 中包含文件夹,但在 zip 的 dist 文件夹中包含同名文件夹

    我有一个名为lib在存储库的根目录和另一个名为lib在 dist 文件夹中 我正在尝试使用 gitattributes文件排除除 dist 之外的所有文件夹和文件 以便任何下载为 zip 或 tarball 的人都只会 git 分发文件 我
  • git 可以与 Xcode 集成吗?

    有没有办法将 git 存储库与 Xcode 内置的 SCM 功能一起使用 Xcode 4 原生支持 git WWDC 2010 上的开发者工具国情咨文演讲 在这里了解更多 Xcode 4 中的新增功能 http developer appl
  • git 预提交钩子格式代码 - Intellij/Android Studio

    本要点展示了如何在预提交时使用 Eclipse 格式化程序自动格式化 Java 代码 Source https gist github com ktoso 708972 https gist github com ktoso 708972
  • 无法使用 git 配置文件进行 ssh

    我知道它被问了很多次 但我无法得到我的问题的答案 我正在尝试使用配置文件 ssh 到系统 配置文件是 Host qa HostName 10 218 70 345 User user IdentityFile C Users bean ss
  • SSH 到 Openshift 服务器失败

    我正在 openshift 服务器上使用 jboss catridge 我希望与其他人共享此实例并添加其他用户的公钥 id rsa pub 当其他人尝试访问该实例时 他会收到以下错误 我在他的实例中尝试了同样的方法 但看到了同样的错误 与
  • 如何解决 VSTS 中拉取请求中的合并冲突?

    我已经创建了拉取请求 我进入了这个 批准 按钮不执行任何操作 并且 完成 被禁用 如何解决拉取请求中的冲突 Update 微软刚刚添加了基于浏览器的合并 这可能会让你摆脱小冲突的困境 并提供自 Sprint 150 起改进了不同场景的可视化
  • 代表 Git 存储库的数学结构是什么

    我正在学习 Git 如果我能描述一下代表 Git 存储库的数学结构 那就太好了 例如 它是一个有向无环图 它的节点代表提交 它的节点有代表分支等的标签 每个节点最多一个标签 没有标签使用两次 我知道这个描述不正确 我只是想解释我正在寻找的内
  • 如何从 android.googlesource.com 或 github.com 下载单个目录?

    我想下载 https android googlesource com platform frameworks base git master tools aapt https android googlesource com platfo
  • 远程测试时如何搭建git开发环境

    这似乎是一个愚蠢的问题 但我觉得我对 GIT 相当了解 但我似乎无法按照我的意愿设置我的开发环境 我要么错过了一些非常简单的东西 要么我做错了 我在我的服务器上初始化了一个裸 git 存储库 将其克隆到我的本地计算机 提交我的文件并推送到原

随机推荐

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

    再会 我在 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