【问题标题】:Recover changes from aborted git commit从中止的 git commit 中恢复更改
【发布时间】:2017-02-08 00:52:50
【问题描述】:

我启动了 Git Gui,单击 Ctrl+I 暂存所有修改过的文件,输入文本消息并单击 Commit。出现一条错误消息,指出 Excel 文件已锁定,询问是重试还是停止。

我想我点击了停止按钮(不确定),Git Gui 关闭,我关闭了 Excel 文件,现在我的大部分文件都消失了。

大约有 6-7 个暂存文件,现在缺少 30-40 个文件。

我不仅错过了过去 2-3 天修改过的文件,还错过了许多其他文件。我想我可以通过检查最后一次提交来恢复旧文件,但是如何恢复最近 2-3 天的更改?

【问题讨论】:

  • “大约有 6-7 个暂存文件,现在缺少 30-40 个文件。”
  • 文件系统中缺少它们。打开 PyCharm 后,我看到 5 个编辑器显示相同的文件,因为他们的文件丢失了。 git status 用deleted: ... 显示约30 条红线。 (我使用 Git Gui 而不是 PyCharm,因为我经常使用 stage hunk 或 line)

标签: git git-gui


【解决方案1】:

我假设在您尝试提交后的某个时间点完成了git add ...,因此您应该能够恢复这些文件,因为 git 确实保存了添加的文件(暂存但未提交)以及提交的文件。尝试运行git fsck --lost-found,它将输出找到丢失和找到的文件的文件夹。祝你好运。

【讨论】:

  • 这是$ git fsck --lost-found / Checking object directories: 100% (256/256), done. / Checking objects: 100% (1840/1840), done. / dangling blob 3400e6a9afd884989fb68162626782c5527aba81 / [...] / dangling blob e2fff20d160f6a6047ed95291c0a7a0ed653bb1e 的输出,有100多行
  • “100 多行”是指 100 多个被列为悬空 blob 的文件?使用git cat-file -p <commit hash> 查看文件,然后希望您可以看到内容以验证该 blob 是您需要的文件。如果 excel 文件是不可读的文件,您可能需要将其通过管道传输到文件并使用 excel 打开...这里只是猜测。
  • @stenci 再尝试一件事。导航到隐藏目录路径:“.git/lost-found”。我相信这些文件是未压缩的并且是可读的。对您要查找的文件执行 grep。
  • 我找到了我的东西,耶!!它已正确提交。然后,由于我单击了中止按钮(我猜),Git Gui 试图恢复到与提交之前相同的状态并将其搞砸。失物招领文件夹有 299 个项目,今天 7:49 创建,但使用 grep 我只找到旧代码,我最近的更改都没有。在提交之前唯一失败的测试现在失败了。我现在感觉好多了。
猜你喜欢
  • 2011-07-16
  • 1970-01-01
  • 2019-07-13
  • 2016-08-15
  • 2020-05-09
  • 2022-10-17
  • 2021-02-17
  • 2017-04-15
  • 2011-03-15
相关资源
最近更新 更多