【问题标题】:Can deleted files that are added but not committed in Git be recovered? [duplicate]Git中添加但未提交的已删除文件可以恢复吗? [复制]
【发布时间】:2012-09-08 05:09:20
【问题描述】:

我是 git 新手,我犯了一个愚蠢的错误,我通过“rm *”命令删除了一些重要文件。但是,我确实使用“git add”来添加这些文件,但没有提交。删除尚未添加。那么有什么方法可以恢复这些已删除的文件。

任何建议或答案将不胜感激。谢谢。

【问题讨论】:

    标签: git recover


    【解决方案1】:

    由于文件已经在您的暂存区(索引)中,只需使用git commit 提交它们,无需任何参数。无论工作树的当前状态如何,这都会提交索引的内容。

    然后您可以使用git reset --hard(如果您在要保留的树中没有其他更改)或git checkout FILE1 FILE2... 将丢失的文件恢复到您的工作树中。

    【讨论】:

      【解决方案2】:

      您可以使用git fsck --lost-found 查找所有不再引用的对象。您需要查看“blob”对象并查看它们是否与您删除的文件匹配。希望您周围没有很多未引用的对象。


      正如用户 4815162342 所指出的,发帖者实际上表示尚未添加删除,这意味着可以使用 git checkout 检索它们,或者只是现在提交以确保它们不会消失。

      我将保留我的答案,以防其他人想要git fsck --lost-found 的信息,但应该接受 user4815162342 的答案。

      【讨论】:

      • 您好,感谢您的回复。我跑的命令,看见晃来晃去斑点像这样的列表,然后我怎么被删除的文件备份?晃来晃去的blob 029530a4ebc7dec791a58cb022e18d0d87c8fe04晃来晃去斑点0c871fff49c4a05ff4a49b6a910f3bc4b688e338悬挂一滴0c08f1e149bfa9e84e9e30867c931423267b91c7 SPAN>
      • git fsck --lost-found 将所有悬空对象写入.git/lost-found/commit/.git/lost-found/other/ 文件夹。查看other 文件夹并尝试在其中找到包含您删除的文件的文件。名称将是 SHA1 哈希,但内容将是实际文件。
      • 您也可以通过git cat-file -p SHA1打印单个对象
      猜你喜欢
      • 2016-04-17
      • 2012-07-29
      • 2016-06-25
      • 2020-06-19
      • 1970-01-01
      • 2020-07-09
      • 1970-01-01
      相关资源
      最近更新 更多