如何在 Git 中将悬挂 blob 与文件名匹配?

2023-12-14

我还有另一个做的例子git rm -rf没有初始提交。 (我意识到我添加了很多无用的文件,并且想添加一些过滤器。)

现在我只剩下 23000 个悬空的 blob,没有树,但有完整的 Git 历史记录!

我将使用一个脚本来循环 blobnames(使用git show 'blobname' > 'filename'),但是我可以将历史记录中的这些文件名与 blob 关联起来吗?


对于所有犯过/将会犯我所犯错误的人来说,故事到这里就结束了。

首先,简单总结一下我所做的事情。

  1. 创建了一个空的存储库
  2. 将许多文件/目录移至其中
  3. gid add .
  4. 意识到我刚刚添加了大量无用/不那么重要/冗余的文件
  5. git rm -rf目的是在 .gitignore 中添加一些过滤器
  6. 发现我所有的文件都消失了...

我尝试了各种数据恢复工具;没有运气。 我能做的最好的就是以下过程。

  1. 立即将工作目录复制到不同的卷 (外部高清)。
  2. git fsck --lost-found可能与--unreachable --cache
    这将创建文件夹.git/lost-found/other与所有(大多数?) 原始文件被重新创建,但没有文件名。现在的问题是 如何恢复文件名。不幸的是,我恢复的所有文件都是 blob,没有根,所以我没有有关目录树结构的信息。
  3. 尽管我有丢失文件名的完整列表(只有名称,没有大小),但我找不到任何根,所以这些信息基本上没有用。
  4. 一般来说,我们可以编写一个脚本来使用file查看文件的类型(file <filename>),并附加相应的扩展名。文件与文件名匹配的问题仍然存在。
    另一种方法是使用蛮力。例如,为了恢复 pdf,我按长度对恢复的文件进行排序,附加 .pdf 扩展名,然后逐一查看它们。真正的 pdf 文件显示了一些内容,而其他文件则没有。
  5. 为了恢复基于文本的文件(txt、tex、c、h..),我使用了 grep,查找我记得属于特定(组)文件的字符串。
  6. 现在,我保留了包含所有丢失恢复文件的目录,每次需要其中一个文件时,我都会使用项目符号 4 的一个轻微变体。

祝你好运!

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

如何在 Git 中将悬挂 blob 与文件名匹配? 的相关文章

  • 有没有一种方法可以非交互地压缩大量提交?

    我正在尝试压缩一系列提交 HEAD 到 HEAD 3 有没有一种快速的方法可以做到这一点 或者我需要使用 rebase interactive 确保你的工作树是干净的 然后 git reset soft HEAD 3 git commit
  • 如何使用它们的更改来解决选择冲突?

    My git cherry pick FOO产生了冲突 我可以检查冲突的文件并删除之间的行 lt lt lt lt lt lt lt and 以及冲突标记本身 但我希望有一种更简单的方法 我觉得svn等同于选择theirs conflict
  • git push origin 分支名总是推送到 master

    我搜索了一下 但似乎找不到答案 在我可以访问的两个盒子上 当我执行 git push dry run origin mytestbranch 时 我得到以下结果 To email protected cdn cgi l email prot
  • Git 拉回 master 中的提交?

    一位同事 我们称之为亚伦 被指派翻新网站的一部分作为长期项目 他创建了一个新的 Git 分支 名为aaron 他所有的改变都是在这个分支上进行的 当他工作时 我继续维护整个网站 将我的更改提交给master 最终 Aaron 将他的分支合并
  • 由于合并而不允许 git revert 但未给出 -m 选项

    我正在尝试使用 revert 命令恢复到 git 中的某个 哈希 号 我正在使用以下命令 git revert c14609d74eec3ccebafc73fa875ec58445471765 但是 我得到以下返回 错误 提交 c14609
  • GIT 中的重复合并。它如何计算差异?

    我一直在做一项研究 试图了解 GIT 合并是如何工作的 我知道有几种合并类型 如递归 章鱼等 我发现解析 递归是最常用的 并且递归合并仅在存在多个共同祖先 基础时才有用 但是 我找不到从分支重复合并到主节点时使用哪种算法 或者如何计算祖先
  • 从分离的头进行 Git 推送

    我以超然的态度做出了一些改变 我想用 Git 将这些更改推送到这个独立的头 我不希望我的更改进入开发分支 当然也不想进入主分支 我正在与另一个人一起处理一个文件 分支示例 develop master HEAD detached at or
  • 命令来确定当前 HEAD 的上游引用?

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

    假设我有应用程序的本地副本 我将其推送到 github 然后使用 git ftp 将任何更改上传到我的服务器 我首先会使用 git ftp init u
  • 从 git 中删除历史记录 - git 命令失败

    我正在尝试从 Git 历史记录中清除项目 bin 目录 我已经将 bin 添加到 gitignore 并运行 git rm cached r bin成功地 现在我尝试使用 GitHub 帮助页面中推荐的命令来清除历史记录 git filte
  • Gerrit 安装后无法克隆所有项目存储库

    我有一个新设置的 Gerrit 实例 目前只有两个存储库 所有项目 binutils 测试 尝试克隆所有项目时 我收到以下错误 git clone ssh user hostname 29418 All Projects Initializ
  • git在Windows和Linux之间切换后强制刷新索引

    我有一个Windows和Linux共享的磁盘分区 格式 NTFS 它包含一个 git 存储库 约 6 7 GB 如果我只使用Windows or 只使用Linux操作 git 存储库一切正常 但是每次切换系统的时候git status命令将
  • Windows 版 GitKraken 中的文件名太长

    正如建议的Q22575737 https stackoverflow com a 22575737 6623589 我已经更新了我的注册表并设置了git config system core longpaths true在处理长路径时 问题
  • 在 git repo 中查找超过 x MB 且 HEAD 中不存在的文件

    我有一个 Git 存储库 用于存储随机的内容 主要是随机脚本 文本文件 我设计的网站等 随着时间的推移 我删除了一些大型二进制文件 通常为 1 5MB 这些文件会增加存储库的大小 而我在修订历史记录中不需要这些文件 基本上我希望能够做到 m
  • 如何使用 .gitattributes 避免在 git root 中包含文件夹,但在 zip 的 dist 文件夹中包含同名文件夹

    我有一个名为lib在存储库的根目录和另一个名为lib在 dist 文件夹中 我正在尝试使用 gitattributes文件排除除 dist 之外的所有文件夹和文件 以便任何下载为 zip 或 tarball 的人都只会 git 分发文件 我
  • git subtree pull -P 不管 总是合并冲突

    问题 即使我没有进行任何更改 每次尝试拉入子树时 我都会遇到合并冲突 我在做什么 In 子树仓库 Make some changes git commit am Changes made git push origin master In
  • 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 不断提示我输入密码

    我已经使用 Git 一段时间了 但是不断要求输入密码开始让我感到厌烦 我使用的是 Mac OS X 和 GitHub 并且按照 GitHub 的说明设置了 Git 和我的 SSH 密钥设置 Git 页面 http help github c
  • 重新打包存储库对于大型二进制文件有用吗?

    我正在尝试将大量历史记录从 Perforce 转换为 Git 并且一个文件夹 现在是 git 分支 包含大量大型二进制文件 我的问题是运行时内存不足git gc aggressive 我的主要问题是重新打包存储库是否可能对大型二进制文件产生

随机推荐

  • 用 Java 处理条形码扫描

    我想让我的应用程序对扫描的条形码做出反应以触发按钮按下 例如 用户可以扫描 打印 条形码来激活打印按钮 条形码将被视为用户输入了一些文本 我不确定扫描仪是否会被设置为在末尾附加一个输入或一个选项卡或什么都没有 所以我不想在此基础上做出假设
  • 将等高线添加到 3D 绘图

    我正在使用 R 编程语言 我使用 plotly 库制作了以下 3 维图 library dplyr library plotly my function lt function x y final value 1 x 2 100 y x 2
  • 如何获取 foreach 循环当前迭代的索引?

    在 C 中是否有一些我没有遇到过的罕见语言构造 比如我最近学到的一些 一些在 Stack Overflow 上 来获取表示 foreach 循环当前迭代的值 例如 我目前根据情况做这样的事情 int i 0 foreach Object o
  • Threejs Blender 导出器导出格式错误

    我正在尝试在提供的帮助下将搅拌机模型导出到 Threejs json搅拌机出口商 解析 json 文件时出现错误 Uncaught TypeError Cannot read property length of undefined jso
  • 运行 plm 固定效应模型并添加因子虚拟变量(树方式固定效应)是否可以?

    运行 plm 固定效应模型并在 R 中添加因子虚拟变量 如下所示 是否可以 时间 公司 和 国家 这三个因素都是独立的指数 我想将它们一起修复 我发现下面的规范更适合我的情况 而不是通过组合 公司 和 国家 地区 来总共创建两个索引 这是可
  • Perl 数组与列表

    我在 Perl 中有两个数据结构 数组 my array2 1 2 3 for elem array2 print elem n 给我以下输出 1 2 3 还有一个清单 my array 1 2 3 for elem array print
  • 在 Java 中 - 如何将 resultSet 映射到复杂对象?

    如何将几个表中的结果集映射到复杂的对象中 让我详细说明一下 假设我有这两门课 public class User private int user id private String fname private String lname g
  • Facebooker 扩展权限?

    Facebook 允许访问 通过扩展权限访问用户的电子邮件 JS 和 PHP 中还有一种方法可以强制用户授予 当他们接受应用程序的 TOS 时获得许可 http wiki developers facebook com index php
  • 用 self 调用类变量

    你会如何想出这个有趣的 至少对我来说 例子 import numpy as np class Something object a np random randint low 0 high 10 def do self self a 1 p
  • 无法在OREO中获取默认帐户

    在安卓奥利奥中 AccountManager getAccountsByType com google 回报null 它在 Android 8 以下版本中运行良好 下面是我的代码 private static Account getAcco
  • 为什么将 OnClickListener 分配给 AutoCompleteTextView 会给出 NullPointerException?

    每当我将 android onClick 属性分配给 AutoCompleteTextView 时 我的应用程序在加载活动时立即崩溃 我已经在没有分配 onClick 方法的情况下测试了 AutoCompleteTextView 它似乎工作
  • Python 脚本到批处理文件

    我有一个运行 python 脚本的批处理文件 我正在运行Python 3 2 我想将一个变量 例如整数或字符串 从 python 脚本发送回批处理文件 这可能吗 我知道我可以在 Python 脚本中接受命令行参数sys argv 希望有一些
  • vbscript filesystemobject 如何编码字符?

    我有这个 vbscript 代码 Set fs CreateObject Scripting FileSystemObject Set ts fs OpenTextFile tmp txt 2 True for i 128 to 255 s
  • Google Drive:上传时自动转换文件?

    是否可以通过 Google Drive 访问自动地将上传的文档转换为原生格式 我知道它适用于manual上传 即 Google Drive 可以自动转换您通过网站上传的文件 但我想避免手动上传每个文件 我更喜欢使用 API 或者更好的是 将
  • 如何在 Java 正则表达式匹配中使用 IsAlphabetic 二进制属性?

    我使用此模式来检查字符串是否以冒号前面至少 2 个字母字符开头 string matches p IsAlphabetic 2 但我收到以下异常 java util regex PatternSyntaxException Unknown
  • 在 ASP.NET Core MVC 中选择标记帮助器

    我需要有关 ASP NET Core 中的选择标记帮助程序的一些帮助 我有一个员工列表 我正在尝试将其绑定到选择标签助手 我的员工在List
  • 从 numpy datetime64 获取年、月或日

    我有一个 datetime64 类型的数组 dates np datetime64 2010 10 17 2011 05 13 2012 01 15 有没有比循环遍历每个元素来获取 np array 年份更好的方法 years f date
  • J2ME/Android/BlackBerry - 行车路线、两个位置之间的路线

    在 Android 1 0 上 有一个用于行车路线的 com google googlenav 命名空间 路线 改进的 Google 行车路线但在较新的 SDK 中 由于某种原因它被删除了 Android 自 API 1 0 以来删除了 D
  • 根据 WordPress 中的类别显示最近的帖子

    我使用一个在 content php 页面上生成缩略图的模板 如下所示
  • 如何在 Git 中将悬挂 blob 与文件名匹配?

    我还有另一个做的例子git rm rf没有初始提交 我意识到我添加了很多无用的文件 并且想添加一些过滤器 现在我只剩下 23000 个悬空的 blob 没有树 但有完整的 Git 历史记录 我将使用一个脚本来循环 blobnames 使用g