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

  • gitlab 请求将分支 A 合并到开发中(落后 3 次提交)我应该担心吗?

    在 gitlab 中创建合并请求时 我经常收到一条消息 请求将分支 A 合并到开发中 x 提交落后 gitlab想告诉我什么 我应该担心还是需要修复某些东西 什么 一段时间后合并请求在项目中打开时 由于其他人合并了自己的更改 您尝试合并到的
  • Git post-receive - 如何检查推送的分支是否与主分支合并

    在我们的团队中 我们通常将所有任务推送到单独的分支中 然后发布经理审查这些分支并将它们合并到 主 分支中 有时团队成员忘记将他们的分支与主分支合并 在推送之前 所以我想做的是 在用户推送后输出一条消息 请与主分支合并 我想我需要检查一些内容
  • 我可以忽略全局 .gitignore 吗?

    我的全局 gitignore 一般都很棒 但对于这个一次性项目 我不希望应用全局规则 如何删除这个怪异存储库的全局 gitignore 规则 在您的存储库中运行此命令 git config local core excludesfile f
  • 清理远程 Git 分支

    我已经将 SVN 存储库移至 Git 可能由于多次克隆 我现在只剩下一堆看起来像这样的分支 BranchA origin BranchA remotes BranchA remotes origin BranchA remotes orig
  • git-svn 如何知道要提交到哪个分支?

    我的存储库是 SVN 我使用 git 进行所有开发 我们有一个标准布局 我用以下命令初始化了我的本地存储库git svn init s
  • 在 Windows 上使用 Git - 意外丢失了大量工作。我可以拿回来吗?

    我很困惑 我想我已经失去了几个小时的工作时间 我之前在 Git 中编辑了一个文件 我保存了它 但没有提交 我确实做了一些其他文件更改 并提交并推送了它们 然而 有一个文件被搞乱了 所以我单击了最后一次成功的提交 然后按了 回滚到此提交 令我
  • 如何使用 git --word-diff 显示空格差异?

    为了说明问题 参见diff https github com nim lang Nim commit 47c7fd037ed28b7de3d120b003d059d30e18f128 diff split diff 8af935b2312d
  • 尝试配置 GIT 时 Eclipse 没有响应

    Windows 10 专业版 64 位SSD金士顿 i5 4690Eclipse 版本 全部工作空间 空问题 每次我尝试配置 TEAM gt GIT gt 配置或尝试导入 创建本地 远程 git 时 Eclipse 都会冻结 直到我强制用任
  • http.h:6:23: 致命错误:curl/curl.h:没有该文件/目录

    我在 CentOS 7 中下载 git 包 wget https www kernel org pub software scm git git 2 0 1 tar gz tar xzf git 2 0 1 tar gz 当我编译git时
  • 如何获取 git 存储库中所有文件的计数?

    如何获取 git 存储库中当前所有文件的计数 您可以使用以下命令获取 git 存储库中所有跟踪文件的计数 git ls files wc l 命令分解 The git ls files命令本身打印出存储库中所有跟踪文件的列表 每行一个 Th
  • 为什么cherry-pick 告诉我所有行都已更改?

    Updated 考虑文件 abc 在提交 A 和 B 中都相同 begin 123 456 789 klm end 在A中 我们重构第一行123 gt AAA并在结果之上选择 B Git 告诉我们all lines in the file
  • Smartgit:自动插入提交消息

    有没有办法使用钩子脚本在 Smartgit 中自动插入提交消息 重击 如果用户提交了他的更改 我想预加载提交消息字段 我没有看到任何SmartGit配置 http www syntevo com smartgit documentation
  • 如果您使用 CocoaPods,您的 .gitignore 中会包含什么内容?

    我从事 iOS 开发已经几个月了 刚刚了解到有前途的可可豆荚 http cocoapods org 用于依赖管理的库 我在个人项目上尝试过 添加了依赖项Kiwi https github com allending Kiwi到我的 Podf
  • 如何在源代码管理中存储 Visual Studio 的调试配置

    Visual Studio 的调试配置存储在 user文件是用户特定的并且传统上被源代码管理忽略 我对工作目录参数感兴趣 我需要它在程序员的机器上保持一致 并且它具有以下价值 outDir而不是默认的 ProjectDir 我怎样才能解决这
  • 为什么从网上下载Git 2.0,总是得到1.9.4的安装包?

    为什么从网上下载Git 2 0 总是得到1 9 4的安装包 为什么你不能在互联网上的任何地方找到一个不仅标记为 2 0 而且你下载的安装存档也标记为这样的 Git 安装程序包 例如 这个2 1 3 站点 http git scm com d
  • Git撤销本地分支删除

    我刚刚删除了错误的分支 并进行了一些我需要的实验性更改git branch D branchName 如何恢复分支 您可以使用git reflog http git scm com docs git reflog查找分支最后一次提交的 SH
  • 为什么 Git Bash 无法运行我的可执行文件?

    I am on git for windows https github com git for windows 吉特 巴什 我无法在命令行上运行可执行文件 Pedr Abc 07 MINGW64 c dev ls sqlite3 exe
  • Git:忽略版本控制文件

    gitignore 文件对于忽略一些我们不想控制的文件非常有用 不幸的是 当文件已处于版本控制之下时 它无法使用 例如 我的 gitignore 已添加到 git 中 文件可能与我的同事想要的不同 例如我想忽略 Vim 文件 每当我对此文件
  • 是否可以从 Github 网站或 API 获取分支合并列表?

    在我们的工作流程中 不会 直接 提交到主分支 主分支仅接收来自 Pull 请求的合并 我们可以将每次合并视为添加到主分支的新功能 因此 我想获得一个合并到 master 中的列表 作为一种可视化随着时间的推移添加到产品中的功能块的方式 gi
  • 有什么方法可以从提交的消息中获取提交的 SHA 值吗?

    当做一个git tag 我并不总是擅长记住 HEAD 6 例如 是包含的还是排他的 鉴于我的大多数提交都以问题号为前缀 我想知道是否有一些神奇的命令可以从其消息的一部分中搜索提交 SHA 我知道这很容易做到git log并从那里开始工作 但

随机推荐

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

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