Git中添加但未提交的已删除文件可以恢复吗? [复制]
Posted
技术标签:
【中文标题】Git中添加但未提交的已删除文件可以恢复吗? [复制]【英文标题】:Can deleted files that are added but not committed in Git be recovered? [duplicate] 【发布时间】:2012-09-08 05:09:20 【问题描述】:我是 git 新手,我犯了一个愚蠢的错误,我通过“rm *”命令删除了一些重要文件。但是,我确实使用“git add”来添加这些文件,但没有提交。删除尚未添加。那么有什么方法可以恢复这些已删除的文件。
任何建议或答案将不胜感激。谢谢。
【问题讨论】:
【参考方案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
打印单个对象以上是关于Git中添加但未提交的已删除文件可以恢复吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章