恢复曾经暂存但未提交的文件?

2023-12-06

我已经在现有项目中初始化了 git repo,暂存了所有文件,然后在没有进行初始提交的情况下决定清理索引。不知道为什么我认为这是一个好主意,但我立即输入git reset --hard(我真的不能说出我此刻的想法,也许几个不眠之夜造成了损失)。现在所有文件都消失了...

是否有可能至少恢复一部分?我看到有对象注册在.git/objects/.


如果你做了一个git add在之前暂存文件git reset,那么所有文件和描述目录层次结构的树对象都在您的对象数据库中.git/objects,除非垃圾收集已经启动了足够长的时间,或者您运行了类似的操作git gc靠你自己。然而,重建事物需要一些工作——git未预先打包内置此功能。以下是一些提示:

  1. Use git cat-file -t HASH在数据库中的每个对象上识别每个对象的类型。寻找那些是树对象的。请注意,对象哈希被分割以命名文件.git/objects。因此,散列为“db6689df4f8aae84d35df2e496158b2746bb0f1e”的对象实际上存储在.git/objects/db/6689df4f8aae84d35df2e496158b2746bb0f1e,前两个字符用作子目录 - 考虑到这一点,您可以轻松地重建对象哈希。如果您有文件.git/objects/pack,那么你可能需要额外运行git verify-pack -v .git/objects/pack/pack-HASH.pack获取每个包文件中包含的对象列表。
  2. 对于每个树对象,使用git cat-file -p HASH查找文件的原始文件名和哈希值(也称为“blob”)。其中一棵树将与您的工作目录的根目录相匹配。一旦确定了根树对象,您就可以
  3. run git ls-tree -r HASH获取所有文件名及其各自哈希值的完整列表。
  4. 对于要从​​上面列表中恢复的每个文件,您可以运行git show HASH > FILENAME要重新创建文件 - 不过,您首先需要手动创建子目录。

有了这些信息,编写一个为您完成繁重工作的脚本应该不会太困难。祝你好运!

编辑:或者,一旦确定了根树对象,您就可以简单地echo "commit for recovery" | git commit-tree HASH,这将创建一个提交并向您报告该新提交的哈希值。然后你可以git checkout HASH将文件放回到工作目录中,并且git branch BRANCHNAME创建一个指向该提交的分支。您也可以看看git tar-tree,如果你的版本git足够老了,或者git archive.

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

恢复曾经暂存但未提交的文件? 的相关文章

  • Git:列出应该被忽略但没有被忽略的文件

    Note 这不是关于修复git rm r cached git add 我实际上希望能够只列出文件 Why 有时当我编辑我的 gitignore并忘记上面的命令 我最终得到的文件仍然在存储库中 但应该被忽略 What 我想要完成的是编写一个
  • 如何在项目提交历史中找到已删除的文件?

    曾几何时 我的项目中有一个文件 我现在希望能够获取它 问题是 我不知道我什么时候删除了它 也不知道它在哪条路径上 当该文件存在时 如何找到该文件的提交 如果您不知道可以使用的确切路径 git log all full history the
  • 如何下载 GitHub 版本的二进制文件?

    我有一个包含我需要的二进制文件的存储库 I can git checkout tags thetagoftherelease 这似乎检查了正确的标签 但没有拉下二进制文件 如何获取添加到版本中的二进制文件 版本上的绿色框 在版本中添加了二进
  • Git - “非单调索引”

    我正在本地电脑上克隆 git 存储库 在此过程中 该命令会输出大量以下错误消息 error non monotonic index git objects pack pack idx 例如 该消息保留在拉动或分支交换机上 但一切似乎都有效
  • 取消忽略 git 中被忽略目录中的文件

    In my gititnore我有一个条目 build 效果很好 整个目录都会被 git 忽略 现在 我只想打破这个规则并保留这个文件 build outputs mapping release mapping txt in git 我怎样
  • Intellij Idea可以自动阶段更改吗

    经过几天的任务处理后 我决定看看已经完成了哪些工作git status来自 Git Bash 有些文件在Changes to be committed list 有些在Changes not staged for commit 有趣的是 我
  • 如何提交 git 标签?

    我已成功对中央 git 存储库进行 提交和推送更改 我现在意识到我想标记所有文件的当前版本 所以我这样做 git tag a 0 5 这样就成功了 但现在我尝试git push我被告知没有什么可承诺的 如何将新标签推送到中央存储库 注意gi
  • 如何配置“git diff”以使用 emacs diff [重复]

    这个问题在这里已经有答案了 是否可以配置 git diff 以使用 emacs diff 如果是的话 你能告诉我怎么做吗 谢谢 看这个问题 如何使用视觉差异程序查看 git diff 输出 https stackoverflow com q
  • 版本控制 rpm 规范文件

    我正在配置一台构建机器来为大量非常相似的项目生成 rpm 每个项目的规范文件在名称上以及有时在依赖项和其他属性上都略有不同 每个项目都有自己的 git 存储库 其中包含项目文件 这些规范文件仅存在并且实际上仅对构建系统本身有用 每个项目都可
  • 从私有 GitHub 存储库迁移到公共和私有

    我使用 GitHub 上的私人存储库开发了一个客户项目 我们现在要做的就是开放其中的某一部分 并产生该项目的开源版本 我们的想法是 客户的版本将在此基础上构建 对开源版本所做的任何更改也应适用于私有版本 现在的问题是我不能将当前的 GitH
  • 从 master 分支部署特定功能

    假设我们使用两个分支进行开发 staging and master 在迭代期间 所有团队成员所做的所有更改都会定期合并到staging分支并出现在我们的暂存环境中 客户能够查看更改并提供反馈 在迭代结束时我们合并staging分支到mast
  • 在 GitHub 上看不到“在 Xcode 中打开”按钮

    正如在GitHub 和 Xcode 9 中的新源代码管理工作流程 https developer apple com videos play wwdc2017 405 time 204Apple 视频会话 我们可以直接从 Xcode 克隆项
  • VS Code / Bitbucket / SSH - 权限被拒绝(公钥)

    我试图通过 ssh 从 vscode 访问 bitbucket 但总是得到权限被拒绝 公钥 SSH 密钥位于 ssh 公钥已正确设置在bitbucket settings security sshkeys 按键已经过测试并且可以工作 启动后
  • 在大型团队中使用 git VS Mercurial 和 Xcode 进行 iOS 开发有何优缺点?

    我们希望在一个项目上一起工作 签出 签入文件 一些开发人员推荐 git 其他开发人员更喜欢 Mercurial 有没有人对这两者都有经验 并且能告诉我为什么我应该花时间在不与 Xcode 集成的 Mercurial 上 而不是只使用集成的
  • git 中的 web.config 和 app.config 机器特定设置

    我们在不同的办公室有多个开发团队 他们需要为我们项目中的许多配置设置使用不同的值web config and app config files 我们希望使用一组合理的默认值来检查这些配置文件 这样通过检查 trunk master 分支 您
  • 在 $git push -u origin main 命令之后,Git bash 不请求任何身份验证,实际上什么也不做

    当我尝试将代码上传到 github 时 以下是我在 Git Bash 终端中执行的步骤 当我尝试使用将代码推送到 github 时 git push u origin main光标移动到下一行并持续闪烁 但不执行任何操作 git remot
  • 使用 git 合并两个文件夹

    我正在和一些以前从未使用过 git 的人一起开发一个项目 由于不了解 git 的功能 他们创建了该项目的两个版本 开发版本和生产版本 这两个版本都存在于当前环境中 更复杂的是 除了旧的开发文件夹之外 另一个用户还创建了这些文件夹 所以项目目
  • 运行 npm install - 如何配置不使用 SSH(端口被防火墙阻止)

    当我跑步时npm install大多数模块配置正确 然而 至少有人想击中ssh 拉取模块的地址 不幸的是 我的公司有一项政策 不允许内部网络之外的 SSH 连接 我收到的具体错误是 Error while executing npm ERR
  • git merge 和 git merge origin 之间的区别

    这不是一个关于git merge origin branch vs git merge origin branch git merge
  • Mac 操作系统屏幕上的 Git 自动补全

    我在 mac 上使用 git 并配置了自动完成功能 如下所示http www codethatmatters com 2010 01 git autocomplete in mac os x http www codethatmatters

随机推荐

  • MySQL默认值问题

    在 MySQL 中 整数字段的默认值为 0 在插入过程中 该字段的值为 NULL 并且 NULL 被插入 我使用该字段的值进行一些算术运算 例如加法 乘法 除法 这会导致错误 因为插入了 NULL 如何解决这个问题 如果整数 小数等字段的插
  • 将自定义滤镜应用于相机输出

    如何将自定义滤镜应用于相机输出中的单个帧并显示它们 到目前为止我尝试过的 mCamera setPreviewCallback new CameraGreenFilter public class CameraGreenFilter imp
  • C# 使用正则表达式删除行,包括换行符

    我需要从某些文本中删除与特定模式匹配的行 一种方法是使用带有开始 结束锚点的正则表达式 如下所示 var re new Regex pattern RegexOptions Multiline string final re Replace
  • Stroustrup 的 PPP 书中有关多边形的问题

    我阅读了 Stroustrup 的 使用 C 进行编程原理和实践 一书 在第12章和第441页中有这样的代码 This is example code from Chapter 12 3 A first example of Program
  • Scala DSL - 引用父级的嵌套块

    在 Scala 中使用 DSL 假设我有这样的东西 house floor bedroom kids bedroom master floor kitchen 现在我想要的是在每个嵌套块中都有一个引用或引用封闭块上的函数 例如 效果是地板被
  • SQL Azure:在 SSMS 2008 R2 中编写对象脚本时出现 SMO 异常

    我正在使用 SQL Server Management Studio 2008 R2 来管理 SQL Azure 数据库 当我尝试右键单击数据库中的任何对象 然后执行 脚本表为 gt 创建 gt 新建查询编辑器窗口 时 我每次都会收到以下异
  • 使用 ASP .NET Core Identity 和 EntityFrameworkCore 注册新用户时出现 InvalidOperationException

    我正在关注使用身份的文档并尝试注册一个新用户 执行注册操作 但失败并出现以下错误 InvalidOperationException 无法为 ApplicationUser 创建 DbSet 因为该类型不包含在上下文的模型中 Startup
  • 在 C# 中使用 RSA 加密并在 Java 中使用解密时出现填充错误

    目前 当我使用 Java 解密 C 中生成的 Base64 编码的 RSA 加密字符串时 收到以下错误 javax crypto BadPaddingException 不是 PKCS 1 块类型 2 或零填充 NET 和 Java 交换之
  • 为什么 RTC 中没有显示我的待处理更改?

    场景 我刚刚连接到流 并创建了一个新的存储库工作区 我加载了它的两个组件 并修改了一些代码 如果我打开 挂起的更改 视图 我在那里看不到任何挂起的更改 并且选择了 显示完整视图 因此我应该看到传入 传出和挂起的更改集 我的文件已保存 我可以
  • Python + Flask + Discord:如何通过 Flask 端点通过 Discord 发送消息?

    我正在尝试发送一条不和谐的消息 通过 Flask 端点激活 当我打电话时 我收到以下错误消息http 127 0 0 1 5000 send RuntimeError There is no current event loop in th
  • 困惑如何在 C++ 中使用 strtod() 从字符串转换为双精度

    如果有人能解释如何使用该功能 那就太好了 看不懂参数 Thanks 第一个参数是指向字符的指针 c str 为您提供来自字符串对象的指针 第二个参数是可选的 它将包含一个指向字符串中数值之后的下一个字符的指针 看http www cplus
  • 展开详细信息/摘要时滚动到锚点?

    我有一大堆堆叠的 div 其中包含id锚点和嵌入视频包裹在details and summary标签 是否可以同时扩展details并滚动到其id只需单击一下 如果我使用下面的脚本 我可以滚动到一个锚点a tag JS document r
  • 如何将绑定错误转化为运行时异常?

    正如我们的项目中设置了 将警告视为错误 以捕获早期可能的问题一样 我希望有一个运行时异常来尽早捕获它们 我最近被这个问题困扰了 我很高兴能有这个 能做到吗 如果是的话 怎么办 你可以挂入PresentationTraceSources与您自
  • 从数据框中删除百分比

    我有一个源自 Excel 文件的数据框 它在列上方有常见的标题 但有些列中有 符号 我想删除它们 搜索 stackoverflow 给出了一些很好的代码 用于从矩阵中删除百分比 有什么方法可以编辑 R 中矩阵中的值吗 当我尝试将其应用到我的
  • 如何在 Angular 中初始化 Firebase App Check

    我想知道如何使用 Angular 初始化 firebase 应用程序检查 我正在使用 Angular Fire 但我不确定如何在使用任何服务之前初始化 Firebase 应用程序检查 文档有这个 在访问任何 Firebase 服务之前 将以
  • 如何清除 Windows Phone 8 上 Cordova Web View 的缓存?

    我正在为 Windows Phone 8 开发 Cordova 2 9 0 应用程序 该应用程序大量使用外部内容 使用从其他来源提供的 JS 和 HTML 内容 一切正常 但浏览器组件缓存严重 我发现清除缓存的唯一方法是卸载并再次安装该应用
  • Xcode 4.4 有 subversion 吗?

    我刚刚下载了 Xcode 4 4 与它的前身不同 没有安装程序 只有一个 app 颠覆潜伏在某处吗 里面有目录吗 app我可以添加到PATH恢复我所有的命令行工具 从 XCode 首选项安装命令行工具 一切都会恢复正常
  • 如何在 JavaScript 单元测试中模拟 localStorage?

    有没有可以模拟的库localStorage 我一直在使用Sinon JS对于我的大多数其他 javascript 模拟 我发现它真的很棒 我的初步测试表明 localStorage 拒绝在 Firefox 中分配 sadface 所以我可能
  • 如何在普通的html文本框中自动换行?

    我有这个文本框 p Event Data p
  • 恢复曾经暂存但未提交的文件?

    我已经在现有项目中初始化了 git repo 暂存了所有文件 然后在没有进行初始提交的情况下决定清理索引 不知道为什么我认为这是一个好主意 但我立即输入git reset hard 我真的不能说出我此刻的想法 也许几个不眠之夜造成了损失 现