【发布时间】:2012-09-08 05:09:20
【问题描述】:
我是 git 新手,我犯了一个愚蠢的错误,我通过“rm *”命令删除了一些重要文件。但是,我确实使用“git add”来添加这些文件,但没有提交。删除尚未添加。那么有什么方法可以恢复这些已删除的文件。
任何建议或答案将不胜感激。谢谢。
【问题讨论】:
我是 git 新手,我犯了一个愚蠢的错误,我通过“rm *”命令删除了一些重要文件。但是,我确实使用“git add”来添加这些文件,但没有提交。删除尚未添加。那么有什么方法可以恢复这些已删除的文件。
任何建议或答案将不胜感激。谢谢。
【问题讨论】:
由于文件已经在您的暂存区(索引)中,只需使用git commit 提交它们,无需任何参数。无论工作树的当前状态如何,这都会提交索引的内容。
然后您可以使用git reset --hard(如果您在要保留的树中没有其他更改)或git checkout FILE1 FILE2... 将丢失的文件恢复到您的工作树中。
【讨论】:
您可以使用git fsck --lost-found 查找所有不再引用的对象。您需要查看“blob”对象并查看它们是否与您删除的文件匹配。希望您周围没有很多未引用的对象。
正如用户 4815162342 所指出的,发帖者实际上表示尚未添加删除,这意味着可以使用 git checkout 检索它们,或者只是现在提交以确保它们不会消失。
我将保留我的答案,以防其他人想要git fsck --lost-found 的信息,但应该接受 user4815162342 的答案。
【讨论】:
git fsck --lost-found 将所有悬空对象写入.git/lost-found/commit/ 或.git/lost-found/other/ 文件夹。查看other 文件夹并尝试在其中找到包含您删除的文件的文件。名称将是 SHA1 哈希,但内容将是实际文件。
git cat-file -p SHA1打印单个对象